2004-06-27 Sergey Poznyakoff -= Version 0.5 released =- ChangeLog turned over. 2004-06-27 Sergey Poznyakoff * doc/texinfo/muint.texi: Include version.texi * NEWS: Updated * configure.ac: Raised version number to 0.5 * mailbox/memory_stream.c (_memory_write): Minor fix * mailbox/filter_iconv.c (internal_icvt_read) (copy_octal): Fixed memory allocation errors. 2004-06-23 Sergey Poznyakoff * guimb/collect.c (guimb_catch_body): Use scm_c_eval_string * include/mailutils/guile.h: Provide a definition of scm_c_eval_string for Guile 1.4x * include/mailutils/mutil.h: Forward declaration of struct timeval needed for the prototype of mu_fd_wait(). * libmu_scm/Makefile.am (mailutils.scm): Fixed producing rule. * libmu_scm/mailutils.scm.in: Added an end-of-file comment * libmu_scm/mu_mailbox.c: Use SCM_UNSPECIFIED where appropriate. * libmu_scm/mu_message.c: Likewise. 2204-06-20 Alain Magloire * examples/nntpclient.c: An example of using nntp. * mailbox/nntp/nntp_date.c: New file. * mailbox/nntp/nntp_group.c: New file. * mailbox/nntp/nntp_last.c: New file. * mailbox/nntp/nntp_list_extensions.c: New file. * mailbox/nntp/nntp_mode_reader.c: New file. * mailbox/nntp/nntp_next.c: New file. * mailbox/nntp/nntp_quit.c: New file. * mailbox/nntp/nntp_stat.c: New file. * mailbox/nntp/Makefile.am * mailbox/nntp/nntp_article.c: Use new macros. * mailbox/nntp/nntp_body.c: Use new macros. * mailbox/nntp/nntp_connect.c: Use new macros. * mailbox/nntp/nntp_head.c: Use new macros. * mailbox/nntp/nntp_response.c: Use new macros. * include/mailutils/nntp.h: New declarations. * include/mailutils/sys/nntp.h: New declarations and macros.. 2204-06-20 Alain Magloire * mailbox/pop/pop3_lista.c: Destroy the list on error. * mailbox/pop/pop3_uidla.c: Destroy the list on error. 2004-06-15 Alain Magloire * mailbox/tcp.c(_tcp_close): Check the return value of close(2). 2004-06-15 Sergey Poznyakoff * libmu_scm/Makefile.am (mailutils.scm): Fixed producing rule. 2004-06-14 Alain Magloire * mailbox/nntp/Makefile.am: New file * mailbox/nntp/nntp_article.c: New file * mailbox/nntp/nntp_header.c: New file * mailbox/nntp/nntp_body.c: New file * include/mailutils/nntp.h: adjustement. 2004-06-12 Alain Magloire * THANKS: Move part of it to AUTHORS file, reorder alphabetically * AUTHORS: Reorder alpha. 2004-06-12 Alain Magloire Putting the framework for NNTP support. * include/mailutils/nntp.h: New file * include/mailutils/sys/nntp.h: New file * mailbox/nntp/nntp_carrier.c: New file * mailbox/nntp/nntp_connect.c: New file * mailbox/nntp/nntp_create.c: New file * mailbox/nntp/nntp_debug.c: New file * mailbox/nntp/nntp_destroy.c: New file * mailbox/nntp/nntp_disconnect.c: New file * mailbox/nntp/nntp_readline.c: New file * mailbox/nntp/nntp_response.c: New file * mailbox/nntp/nntp_sendline.c: New file * mailbox/nntp/nntp_stream.c: New file * mailbox/nntp/nntp_timeout.c: New file 2004-06-12 Sergey Poznyakoff * auth/gsasl.c: Revised use of const modifiers * auth/lbuf.c: Likewise * auth/lbuf.h: Likewise * auth/mysql.c: Likewise * auth/pam.c: Likewise * auth/pgsql.c: Likewise * auth/sql.c: Likewise * auth/tls.c: Likewise * auth/virtual.c: Likewise * examples/iconv.c: Likewise * imap4d/auth_gsasl.c: Likewise * imap4d/imap4d.c: Likewise * imap4d/util.c: Likewise * include/mailutils/mu_auth.h: Likewise * include/mailutils/mutil.h: Likewise * include/mailutils/stream.h: Likewise * libmu_scm/mu_mailbox.c: Likewise * mailbox/file_stream.c: Likewise * mailbox/filter_iconv.c: Likewise * mailbox/mapfile_stream.c: Likewise * mailbox/mu_auth.c: Likewise * mailbox/mutil.c: Likewise * mailbox/stream.c: Likewise * mailbox/system.c: Likewise * mailbox/include/stream0.h: Likewise * mailbox/maildir/maildir.h: Likewise * mailbox/maildir/mbox.c: Likewise * mh/mh_format.c: Likewise * mh/mh_init.c: Likewise * mh/send.c: Likewise * pop3d/extra.c: Likewise * mail/util.c: Commented out unused static functions * comsat/cfg.c: Likewise * mail/from.c: Minor fix * mailbox/daemon.c: Likewise * mailbox/muerrno.c: Added missing includes * mailbox/rfc2047.c: Likewise * mailbox/maildir/folder.c: Likewise * mailbox/mbox/url.c: Likewise * mailbox/mh/folder.c: Likewise * mh/mh.h: Likewise * mh/mh_alias.l: Likewise * mh/mh_fmtgram.y: Provide forward declarations for yyerror and yylex. * libsieve/sieve.y: Likewise 2004-06-09 Sergey Poznyakoff * NEWS: Updated * doc/texinfo/programs.texi: Updated * include/mailutils/mutil.h (mu_decode_filter): New function (mu_default_fallback_mode): New variable. (mu_set_default_fallback): New function. * mailbox/mutil.c: Likewise * libmu_scm/Makefile.am: Do not use $< in explicit rules * mail/util.c (util_setenv): Special handling for decode-fallback variable * mail.remote/mail.remote.c: Fixed doc string * mailbox/mu_auth.c: Add missing gettext markers * mailbox/rfc2047.c: Use mu_decode_filter. * mh/mh_global.c (mh_read_profile): Handle new profile variable "Decode-Fallback". * pop3d/pop3d.c (options): Fixed typo in doc string * include/mailutils/stream.h: Forward declaration of struct timeval is needed for stream_wait(). 2004-06-06 Sergey Poznyakoff * include/mailutils/filter.h (filter_iconv_create): New prototype. * mailbox/filter_iconv.c: Fixed several bugs. Use an extra argument to filter_iconv_create to decide what to do if conversion fails (mu_iconv_fallback_mode). * examples/iconv.c: Updated call to filter_iconv_create() * mailbox/rfc2047.c: Likewise. 2004-06-05 Sergey Poznyakoff * NEWS: Updated * configure.ac: Check for iconv.h and iconv_t (MU_COMMON_LIBRARIES): New subst symbol * comsat/Makefile.am: Use MU_COMMON_LIBRARIES * dotlock/Makefile.am * examples/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * from/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * mail.remote/Makefile.am: Likewise. * mailbox/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * mh/Makefile.am: Likewise. * movemail/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * readmsg/Makefile.am: Likewise. * sieve/Makefile.am: Likewise. * mailbox/file_stream.c (_file_read, _file_readline): Check for eof. * mailbox/list.c (list_set_destroy_item): Minor fix * include/mailutils/errno.h (MU_ERR_BUFSPACE): New error code * mailbox/muerrno.c: Likewise * include/mailutils/stream.h (MU_STREAM_STRICT): New flag * libsieve/extensions/spamd.c: Minor formatting fix * mailbox/mailutils-config.c (main): add LINK_POSTFLAGS * mailbox/rfc2047.c: (rfc2047_decode): Implemented charset recoding using iconv filters. * mailbox/filter_iconv.c: New file. Implementation of iconv filter streams. * examples/iconv.c: New file * po/POTFILES.in: Updated 2004-06-04 Sergey Poznyakoff * NEWS: Updated * examples/pop3client.c: Minor fixes. * libsieve/extensions/spamd.c: Minor formatting changes * mailbox/pop/pop3_sendline.c: Bugfix 2004-06-04 Sergey Poznyakoff Use adbstract transport layer in streams, instead of integer file descriptors. Among other things, this fixes a long standing bug in imap4d: now it can use SASL over TLS. * auth/gsasl.c: Use stream transport instead of fd. * auth/tls.c: Likewise. * pop3d/extra.c: Likewise. * include/mailutils/types.h (mu_transport_t): New data type * include/mailutils/gsasl.h (gsasl_stream_create): Changed prototype * include/mailutils/tls.h (tls_stream_create) (tls_stream_create_client): Changed prototype * include/mailutils/mutil.h (mu_fd_wait): New function * include/mailutils/stream.h (stream_get_fd) (stream_get_fd2,stream_set_fd): Removed (stream_get_transport2,stream_get_transport) (stream_wait,stream_set_get_transport2) (stream_set_wait): New functions * mailbox/stream.c: Likewise * mailbox/include/stream0.h (struct _stream._get_fd): Removed (_get_transport2,_wait): New methods * examples/http.c: Use new stream functions * imap4d/auth_gsasl.c: Likewise * imap4d/util.c: Likewise * libsieve/extensions/spamd.c: Likewise * mailbox/body.c: Likewise * mailbox/file_stream.c: Likewise * mailbox/filter.c: Likewise * mailbox/mapfile_stream.c: Likewise * mailbox/message.c: Likewise * mailbox/mime.c: Likewise * mailbox/mutil.c: Likewise * mailbox/tcp.c: Likewise * mailbox/imap/mbox.c: Likewise * mailbox/mbox/mbox.c: Likewise * mailbox/pop/mbox.c: Likewise * mailbox/pop/pop3_readline.c: Likewise * mailbox/pop/pop3_sendline.c: Likewise * mh/mhn.c: Likewise * examples/http.c: Likewise * imap4d/idle.c: Likewise * include/mailutils/sys/pop3.h: Likewise * mail/file.c (mail_file): minor fix * mailbox/folder.c: minor fix * mailbox/mailcap.c: minor fix 2004-06-02 Sergey Poznyakoff * configure.ac: Raised version number to 0.4.90 * NEWS: LIkewise * mailbox/muerrno.c (MU_ERR_CONN_CLOSED,MU_ERR_PARSE): New error codes. (MU_ERR_NOENT): New error code. Use it instead of ENOENT to avoid misguiding diagnostics 'No such file or directory'. Use ENOENT only for its direct purpose. * include/mailutils/errno.h: Likewise. * auth/gsasl.c: Revise the usage of return codes. * auth/tls.c: Likewise. * examples/addr.c: Likewise. * imap4d/namespace.c: Likewise. * lib/mu_dbm.c: Likewise. * mail/util.c: Likewise. * mailbox/address.c: Likewise. * mailbox/amd.c: Likewise. * mailbox/attachment.c: Likewise. * mailbox/attribute.c: Likewise. * mailbox/auth.c: Likewise. * mailbox/body.c: Likewise. * mailbox/debug.c: Likewise. * mailbox/envelope.c: Likewise. * mailbox/file_stream.c: Likewise. * mailbox/filter.c: Likewise. * mailbox/filter_trans.c: Likewise. * mailbox/folder.c: Likewise. * mailbox/header.c: Likewise. * mailbox/iterator.c: Likewise. * mailbox/list.c: Likewise. * mailbox/mailcap.c: Likewise. * mailbox/mailer.c: Likewise. * mailbox/mapfile_stream.c: Likewise. * mailbox/mbx_default.c: Likewise. * mailbox/memory_stream.c: Likewise. * mailbox/message.c: Likewise. * mailbox/mime.c: Likewise. * mailbox/monitor.c: Likewise. * mailbox/mu_auth.c: Likewise. * mailbox/observer.c: Likewise. * mailbox/property.c: Likewise. * mailbox/refcount.c: Likewise. * mailbox/registrar.c: Likewise. * mailbox/rfc2047.c: Likewise. * mailbox/sendmail.c: Likewise. * mailbox/smtp.c: Likewise. * mailbox/stream.c: Likewise. * mailbox/tcp.c: Likewise. * mailbox/ticket.c: Likewise. * mailbox/url.c: Likewise. * mailbox/wicket.c: Likewise. * mailbox/imap/folder.c: Likewise. * mailbox/imap/mbox.c: Likewise. * mailbox/mbox/folder.c: Likewise. * mailbox/mbox/mbox.c: Likewise. * mailbox/mbox/url.c: Likewise. * mailbox/pop/mbox.c: Likewise. * mailbox/pop/pop3_capa.c: Likewise. * mailbox/pop/pop3_carrier.c: Likewise. * mailbox/pop/pop3_list.c: Likewise. * mailbox/pop/pop3_lista.c: Likewise. * mailbox/pop/pop3_retr.c: Likewise. * mailbox/pop/pop3_stat.c: Likewise. * mailbox/pop/pop3_timeout.c: Likewise. * mailbox/pop/pop3_top.c: Likewise. * mailbox/pop/pop3_uidl.c: Likewise. * mailbox/pop/pop3_uidla.c: Likewise. * mh/mh_ctx.c: Likewise. 2004-06-01 Sergey Poznyakoff * examples/mailcap.c (main): Bugfix: fields_count had wrong type. * include/mailutils/mailutils.h: Remove guile.h. (reverses another part of changes made 2004-01-10). 2004-05-27 Sergey Poznyakoff * NEWS: Updated * include/mailutils/filter.h (rfc_2047_Q_filter): New filter type. * mailbox/filter.c (mailbox/filter.c): Register rfc_2047_Q_filter * mailbox/filter_trans.c: New implementation of RFC 2047 "Q" filter. Reorganized all functions. * mailbox/rfc2047.c: Correctly decode "Q" encoding. * mail/send.c (mail_send0): Check ignoreeof variable for interactive sessions only. * mailbox/mbox/folder.c: Include mutil.h 2004-05-07 Sergey Poznyakoff * mail/from.c (mail_from0): Use Date: header if 'datefield' is set. * mail/mail.c (main): Start interactive mode with an empty mailbox if 'emptystart' is set. * NEWS: Updated * doc/texinfo/programs.texi (Mail Variables): Documented new variables. 2004-05-07 Sergey Poznyakoff * mail/util.c (util_get_sender): Updated to match recent changes (see the previous entry). * mailbox/argcv.c (argcv_scan): Honor escaped whitespace. 2004-04-27 Sergey Poznyakoff * NEWS: Updated * doc/texinfo/mailutils.texi: Added variable and keyword index * doc/texinfo/programs.texi: Documented new features * doc/texinfo/Makefile.am: Updated * mail/mail.c (main): Changed initialization sequence. Set xmailer and default sender fields on startup. * mail/mail.h (mail_sender,mail_nosender) (get_sender_address): New functions. * mail/retain.c: Likewise. * mail/send.c: Do not add X-Mailer if xmailer variable is unset. * mail/table.c (sender,nosender): New commands * include/mailutils/Makefile.am: Added daemon.h 2004-04-26 Wojciech Polak Added -P, --pidfile=FILE options for the daemons. * mailbox/daemon.c: New file. Added pidfile support and a placeholder for a further universal daemon routines. * mailbox/mu_argp.c: Added new pidfile option. * mailbox/Makefile.am: Added daemon.c. * include/mailutils/daemon.h: New file. * include/mailutils/argp.h (daemon_param): Added *pidfile. * pop3d/pop3d.c (main): Call daemon_create_pidfile() if the -P or --pidfile option was specified. (daemon_param): Set initial NULL for the pidfile name. * imap4d/imap4d.c (main): Likewise. * pop3d/pop3d.h: Include <mailutils/daemon.h>. * imap4d/imap4d.h: Likewise. 2004-04-14 Sergey Poznyakoff * mail.remote/mail.remote.c: Use "auth" capability. * mail.remote/Makefile.am (mail_remote_LDADD): Add @AUTHLIBS@ * mailbox/mu_argp.c (read_rc, mu_create_argcv): Do not bail out if mu_tilde_expansion() returns NULL. There may be users without homedir. * mailbox/mutil.c (mu_get_user_email): Use mu_get_auth_by_uid() instead of getpwuid(). 2004-04-14 Jordi Mallach * examples/pop3client.c (pop_completion): Use rl_completion_matches. Fixes potential crash on 64-bit architectures. 2004-04-08 Sergey Poznyakoff * configure.ac: Add AM_ICONV * mailbox/smtp.c (smtp_send_message): Correctly handle long header lines. Fixes bug reported by William MacBain <macbain@ott-fortimail.dnsalias.org> * comsat/comsat.c (comsat_main): Make info text clearer. * sieve/sieve.c (options): Likewise * frm/frm.c: Likewise * dotlock/dotlock.c (main): Fixed diagnostics to better suit i18n. * guimb/main.c (options): Add translators comment * libsieve/actions.c: Likewise. * libsieve/tests.c: Likewise. * libsieve/comparator.c (sieve_match_part_checker): Likewise. * mail/if.c (mail_if): Likewise. * pop3d/popauth.c: Likewise. * mail.remote/testsuite/mail.remote/send.exp: Updated copyright date * mailbox/mutil.c: Add missing gettext marker * examples/pop3client.c: Rewritten to drop the readline dependency. 2004-02-08 Wojciech Polak * pop3d/pop3d.c (pop3d_mainloop): Terminate the session after receiving an illegal TLS packet. * imap4d/starttls.c (imap4d_starttls): Likewise. 2004-02-08 Wojciech Polak * doc/texinfo/*: Updated to the current API. * doc/man/*: Too many outdated stuff... Replaced it with the "always fresh" man pages ;). 2004-02-05 Sergey Poznyakoff * include/mailutils/header.h (MU_HEADER_DELIVERY_DATE) (MU_HEADER_ENVELOPE_TO): New macros. * mailbox/amd.c (amd_envelope_date): Use Delivery-Date if X-Envelope-Date is not present. 2004-02-03 Sergey Poznyakoff * mailbox/maildir/mbox.c (maildir_message_cmp): Compare the rest of filenames if the timestamps are equal * mail/if.c (mail_if): 'if t' is true if stdout is connected to a terminal. * mailbox/mbox/url.c (_url_path_init): Missed typecast. 2004-02-03 Sergey Poznyakoff * scripts/texify.sed: New file * scripts/Makefile.am: Added texify.sed * doc/texinfo/Makefile.am (.c.inc rule): Use texify.sed 2004-02-03 Linus Nordberg <linus@nordberg.se> * mailbox/pop/pop3_readline.c: Include sys/time.h. * mailbox/maildir/mbox.c: Include limits.h. (maildir_uniq): Use _POSIX_PATH_MAX if PATH_MAX is not defined. * mailbox/file_stream.c: Include signal.h. 2004-02-01 Sergey Poznyakoff * mailbox/maildir/mbox.c (maildir_message_lookup): Fixed bug (rc could have been used uninitialized). Thanks Wojciech for noticing (maildir_scan0): Fixed typo in notification loop. 2004-01-27 Sergey Poznyakoff * mailbox/smtp.c: Control the value of READ_RECIPIENTS property to decide whether the message should be scanned for recipient addresses. * mailbox/sendmail.c: Likewise. * mail.remote/mail.remote.c: New option -t (compatible with sendmail). Simplified the help message. (main): Restructured. * mail.remote/testsuite/mail.remote/send.exp (mail_remote_test): Added OPTION statement * mail.remote/testsuite/Data: Added new test. * mailbox/mailbox.c (mailbox_lock, mailbox_unlock): New functions. * include/mailutils/mailbox.h: Likewise * imap4d/close.c (imap4d_close): Return NO on failure. * mailbox/include/mailer0.h (struct _mailer): Removed unused field properties_count. * TODO: Updated * NEWS: Updated 2004-01-22 Sergey Poznyakoff * mailbox/amd.c: Use sorted message array with binary searches/inserts. This speeds up the mh/maildir operations considerably. Testing on a MH folder with 6000 messages shows the following data: Time of execution List Array+Bsearch % Speedup (times) scan 24.795 7.526 30.3 3.294 refile (to) 10.915 0.068 0.6 160.514 rmm 10.893 0.105 1 103.742 * mailbox/include/amd.h: Likewise. * mailbox/maildir/mbox.c: Likewise. * mailbox/mh/mbox.c: Likewise. * imap4d/auth_gss.c: Support for GSS. Submitted by Simon Josefsson. * m4/gssapi.m4: Likewise. 2004-01-20 Wojciech Polak * doc/texinfo/*.texi: Major reorganization in the documentation. 2004-01-19 Wojciech Polak * libsieve/tests.c (retrieve_header): Unfold the header, use header_aget_field_value_unfold(). 2004-01-15 Sergey Poznyakoff * imap4d/util.c (util_base64_encode): Bugfix. Patch submitted by Simon Josefsson. * imap4d/Makefile.am: Added local folder format support. * pop3d/Makefile.am: Likewise. * imap4d/imap4d.c (main): Call mu_register_local_mbox_formats(). * pop3d/pop3d.c: Likewise. * imap4d/namespace.c (namespace_checkfullpath): Preserve an eventual URL scheme specification. Fixed indentation. * include/mailutils/registrar.h (mu_register_local_mbox_formats) (mu_register_remote_mbox_formats): New macros. * mailbox/maildir/mbox.c: Added UID support. * mailbox/mh/mbox.c (mh_scan0): Removed misleading comment 2004-01-15 Wojciech Polak * mailbox/mbox/mbox.c: Minor. Use only one printing style while debugging. 2004-01-14 Sergey Poznyakoff * mailbox/mbox/mbox.c (mbox_append_message0): Truncate the stream back to its original size if an error occured. * mail.local/main.c (deliver): Likewise. * frm/frm.c: Minor fix in help output. * mail/copy.c: Check for error return from mailbox_append_message * mail/quit.c: Likewise. * mail/send.c: Likewise. 2004-01-13 Sergey Poznyakoff * frm/frm.c: Lots of changes for compatibility with ELM. * frm/testsuite/frm/test.exp: Updated 2004-01-13 Sergey Poznyakoff Implemented 'file:' URLs * include/mailutils/registrar.h: Removed file_record * mailbox/include/registrar0.h: Likewise * examples/mimetest.c: Likewise * mailbox/mbox/folder.c: Likewise * include/mailutils/mutil.h (mu_scheme_autodetect_p): New function * mailbox/mutil.c: Likewise * mailbox/amd.c (amd_url_init): Use mu_scheme_autodetect_p(). * mailbox/maildir/folder.c (_maildir_is_scheme): Likewise. * mailbox/mh/folder.c (_mh_is_scheme): Likewise. * mailbox/url_file.c: Removed. File not needed anymore. * mailbox/url_path.c: Likewise. * mailbox/Makefile.am (url_file.c,url_path.c): Removed * mailbox/mbox/url.c (_url_path_init): Moved from ../url_path.c * mailbox/mbox/file.c: Removed. File not needed anymore. * mailbox/mbox/Makefile.am (file.c): Removed * frm/frm.c: Improved handling of --select option. (action): Optimized select condition. * from/from.c: Include missing headers 2004-01-13 Wojciech Polak * from/from.c: Use mu_error() where appropriate. (from_rfc2047_decode): New function. * messages/messages.c: Use mu_error(). 2004-01-12 Wojciech Polak * frm/frm.c (frm_rfc2047_decode): New function. (get_personal): Call the frm_rfc2047_decode(). * mail/util.c (util_rfc2047_decode): Test LANG if LC_ALL is null. 2004-01-12 Sergey Poznyakoff * include/mailutils/mailutils.h: Removed gsasl.h (reverses part of changes made 2004-01-10). Reason: unconditional inclusion causes compilation failure if libgsasl is not installed. * NEWS: Updated * mailbox/maildir/maildir.h: New file. * mailbox/amd.c (amd_url_init): New function * mailbox/include/amd.h: Likewise. * mailbox/include/registrar0.h (_url_mh_init,_folder_mh_init) (_url_maildir_init,_folder_maildir_init): Removed. * mailbox/maildir/url.c: Removed. * mailbox/maildir/maildir.h: New file * mailbox/maildir/folder.c: Auto-detection of maildir format. * mailbox/maildir/mbox.c (mkfilename): Renamed to maildir_mkfilename. Made external. * mailbox/maildir/Makefile.am: Removed url.c, added maildir.h * mailbox/mbox/folder.c (_path_is_scheme): New function. Implements auto-detection for the "path" scheme. * mailbox/mh/url.c: Removed * mailbox/mh/Makefile.am: Removed url.c * mailbox/mh/folder.c: Auto-detection of MH format. * mailbox/url.c: Fixed indentation * frm/frm.c: Minor changes. 2004-01-11 Sergey Poznyakoff * mailbox/amd.c (amd_open,amd_close): Bugfix 2004-01-11 Wojciech Polak * libmu_scm/mailutils.scm.in (mu-libs): Added libmu_maildir. 2004-01-11 Wojciech Polak * readmsg/readmsg.c (main): Use mu_register_all_mbox_formats(). * guimb/main.c (main): Use mu_register_all_formats(). * scripts/mailutils.spec.in: Updated. * include/mailutils/Makefile.am: Added missing refcount.h. 2004-01-10 Wojciech Polak * include/mailutils/mailutils.h: Added missing header files. * include/mailutils/gsasl.h: Include <gsasl.h>. * messages/messages.c (main): Use mu_register_all_mbox_formats(). (messages_count): Improved diagnostics. * messages/Makefile.am: Updated. * frm/frm.c (main): Unified diagnostic messages. * frm/Makefile.am: Updated. 2004-01-09 Sergey Poznyakoff * NEWS: Documented new features. 2004-01-08 Sergey Poznyakoff * configure.ac (LIBMU_SCM_DEPS): Added maildir * mailbox/amd.c: New file. Abstract mail directory level. * mailbox/Makefile.am: Added amd.c * mailbox/include/amd.h: New file. * mailbox/include/Makefile.am: Added amd.h * mailbox/maildir/mbox.c: Implemented * mailbox/maildir/folder.c: New file * mailbox/maildir/url.c: New file * mailbox/maildir/Makefile.am: Added folder.c and url.c * mailbox/mh/mbox.c: Re-implemented via AMD. * mailbox/include/registrar0.h: Added maildir support * libmu_scm/mu_scm.c: Likewise. * mailbox/mu_argp.c: Likewise. * include/mailutils/registrar.h (mu_register_all_mbox_formats) (mu_register_all_mailer_formats,mu_register_all_formats): New macros. * frm/frm.c (main): Use mu_register_all_mbox_formats * from/from.c: Likewise. * movemail/movemail.c: Likewise. * mail/mail.c (main): Use mu_register_all_formats * sieve/sieve.c: Likewise * mh/mh_init.c (mh_init): Likewise * lib/Makefile.am: Minor formatting change * messages/messages.c: Likewise * pop3d/pop3d.h (pop3d_mark_retr,pop3d_is_retr) (pop3d_unmark_retr): Added external declarations. 2004-01-06 Sergey Poznyakoff * m4/Makefile.am: Removed. * m4/.cvsignore: Updated * configure.ac: Removed m4/Makefile.am * Makefile.am: Removed m4 2004-01-05 Sergey Poznyakoff * include/mailutils/mutil.h (mu_true_answer_p): New function. * mailbox/mutil.c: Likewise * mail/var.c: (parse_headers): Use mu_true_answer_p() * mh/mh.h (is_true): Likewise. * mh/mh_init.c (mh_vgetyn): Likewise. * sieve/sieve.c (is_true_p): Likewise. * movemail/movemail.c (move_message): Improved diagnostics * libsieve/runtime.c (instr_run): Adjust pc before calling handler. * libsieve/actions.c (sieve_action_stop); Restored zero assignment to pc. This is possible due to the changes to runtime.c 2004-01-05 Sergey Poznyakoff * include/mailutils/libsieve.h (sieve_locus_t): New datatype. (sieve_action_log_t): Changed type of the second argument. * libsieve/actions.c (sieve_action_stop): Bugfix. Account for -4 offset. * libsieve/comparator.c (sieve_match_part_checker): Use extended regular expressions by default. * libsieve/prog.c (sieve_code_source,sieve_code_line): New functions. (sieve_code_action,sieve_code_test): Include line info before coding the instruction. * libsieve/runtime.c (instr_source,instr_line) (sieve_get_locus): New functions * libsieve/sieve.h (sieve_op_t.line): New member * libsieve/sieve.l (push_source,pop_source): Include line info * libsieve/sieve.y (sieve_machine_destroy) (sieve_machine_begin): Initialize and destroy source_list * libsieve/util.c (sieve_log_action): Updated call to mach->logger. * libsieve/tests.c: Improved debugging messages * libsieve/extensions/list.c: Likewise. * libsieve/extensions/spamd.c: Likewise. * libsieve/extensions/timestamp.c: Likewise. * examples/numaddr.c: Likewise. * mail.local/main.c: Brought in sync with recent changes to libsieve * sieve/sieve.c: Likewise. * sieve/testsuite/lib/sieve.exp: Default to --line-info=no * include/mailutils/list.h (list_locate): New function * mailbox/list.c: Likewise 2004-01-04 Wojciech Polak * mail/send.c (mail_send): Bugfix. Removed free(p) and prevent from later segmentation fault. 2004-01-03 Wojciech Polak * auth/tls.c (generate_dh_params): Adapt to GnuTLS >= 1.0.0. * po/POTFILES.in: Added movemail/movemail.c 2004-01-03 Sergey Poznyakoff * guimb/scm/sieve.scm.in (sieve-version): New function. Supports the required --version option. 2004-01-03 Sergey Poznyakoff * configure.ac: Fixed INTLINCS * examples/Makefile.am: Reverted to mod_LTLIBRARY for numaddr.la * libmu_scm/Makefile.am: Removed a too general implicit rule. It caused config.h to be rebuilt incorrectly. 2004-01-02 Wojciech Polak Happy GNU Year! :) * libsieve/extensions: New directory. * libsieve/extensions/Makefile.am: New file. * libsieve/Makefile.am: Added `SUBDIRS = . extensions'. * examples/timestamp.c: Moved to ../libsieve/extensions/ * examples/list.c: Likewise. * examples/spamd.c: Likewise. * examples/Makefile.am: Updated. Added `noinst_LTLIBRARIES = numaddr.la'. * configure.ac (AC_PREREQ): Bump to 2.59. (AC_CONFIG_FILES): Added libsieve/extensions/Makefile. * Makefile.am: Require at least version 1.8. 2003-12-30 Sergey Poznyakoff * examples/spamd.c (spamd_test): Use EUID to determine user's identity. * movemail/movemail.c: Allow to use traditional Emacs invocation (password as the last argument) with usual Mailutils URLs. 2003-12-30 Sergey Poznyakoff * examples/murun.c: Close output stream * include/mailutils/locker.h (enum mu_locker_set_mode): New data type (locker_set_default_flags): Changed declaration (locker_set_default_retry_timeout) (locker_set_default_retry_count) (locker_set_default_expire_timeout) (locker_set_default_external_program): New functions * mailbox/locker.c: Likewise * mailbox/mu_argp.c: New locker options * mail.local/main.c: Adapt for new locker functions. * mailbox/file_stream.c (prog_stream_wait,start_program_filter) (_prog_close,_prog_open): Bugfixes * mh/mhl.c: Minor fix * movemail/movemail.c: --keep-messages option (an alias for -p) 2003-12-29 Sergey Poznyakoff * comsat/comsat.c (main): Minor fix (do not use hardcoded log facility) * mail.local/main.c: New option --message-id-header * imap4d/imap4d.c: Fixed first argument to socket (Thanks Daniel Dehennin <nebuchadnezzar@nerim.net> for reporting) * mailbox/tcp.c: Likewise * pop3d/pop3d.c: Likewise * mailbox/mu_argp.c: Minor style fix 2003-12-28 Jeff Bailey <jbailey@nisa.net> * doc/texinfo/Makefile.am: Use ../$(srcdir) instead of .. to support srcdir != builddir invocations of make html. * doc/texinfo/programs.texi: Provide sample invocation of mail.local. Include note about virtual hosting. 2003-12-28 Sergey Poznyakoff * movemail/movemail.c: Minor changes for compatibility with the Emacs implementation. 2003-12-28 Sergey Poznyakoff * movemail: New directory * movemail/movemail.c: New file * movemail/Makefile.am: New file * movemail/.cvsignore: New file * Makefile.am: Added movemail * configure.ac: Likewise * examples/spamd.c: Minor changes * examples/list.c: Minor changes 2003-12-26 Sergey Poznyakoff * COPYING: New file * COPYING.LIB: Renamed to * COPYING.LESSER: this * Makefile.am: Updated * README: Updated * autogen.sh: Updated * configure.ac: Fixes to work with automake 1.8/autoconf 2.59 * m4/db2.m4: Likewise * m4/debug.m4: Likewise * m4/getopt.m4: Likewise * m4/gsasl.m4: Likewise * m4/gssapi.m4: Likewise * m4/guile.m4: Likewise * m4/lib.m4: Likewise * m4/mu_libobj.m4: Likewise * m4/tls.m4: Likewise * doc/texinfo/body.texi: Minor fixes. * doc/texinfo/libsieve.texi: Likewise 2003-12-26 Sergey Poznyakoff * examples/list.c: New sieve extension test. * examples/spamd.c: Modified. * examples/Makefile.am: Added list.c * dotlock/dotlock.c: Changed multiline doc string to a single-line one: gettext 0.13 is unable to handle translator comments with multiline msgids. * mail.local/main.c: Likewise * mail.remote/mail.remote.c: Likewise * mh/anno.c: Likewise * mh/fmtcheck.c: Likewise * mh/folder.c: Likewise * mh/forw.c: Likewise * mh/inc.c: Likewise * mh/install-mh.c: Likewise * mh/mark.c: Likewise * mh/mhl.c: Likewise * mh/mhn.c: Likewise * mh/mhpath.c: Likewise * mh/pick.c: Likewise * mh/refile.c: Likewise * mh/repl.c: Likewise * mh/rmf.c: Likewise * mh/rmm.c: Likewise * mh/scan.c: Likewise * mh/send.c: Likewise * mh/whom.c: Likewise * sieve/sieve.c: Likewise 2003-12-25 Sergey Poznyakoff Added changes from the backup repository 2003-12-24 Sergey Poznyakoff * examples/spamd.c: New file. * examples/Makefile.am: Added spamd.c * include/mailutils/libsieve.h (sieve_match_part_checker): Prototype. 2003-12-23 Sergey Poznyakoff * examples/pop3client.c: Added typecasts * include/mailutils/errno.h: New error codes * mailbox/muerrno.c: Likewise * mail.remote/testsuite/Data: Updated to synchronize with the changes dated 2003-12-04 * mailbox/file_stream.c: Rewritten support for program streams. (filter_prog_stream_create): New function. * include/mailutils/stream.h (filter_prog_stream_create): New function. * examples/murun.c: New file * examples/Makefile.am: Added murun.c 2003-12-17 Wojciech Polak * configure.ac: Set AM_GNU_GETTEXT_VERSION(0.13). * m4/Makefile.am: Updated (gettext 0.13). 2003-12-17 Sergey Poznyakoff * dotlock/dotlock.c: Added translators' comment * mail.local/main.c: Likewise * mail.remote/mail.remote.c: Likewise * mh/anno.c: Likewise * mh/fmtcheck.c: Likewise * mh/folder.c: Likewise * mh/forw.c: Likewise * mh/inc.c: Likewise * mh/install-mh.c: Likewise * mh/mark.c: Likewise * mh/mhl.c: Likewise * mh/mhn.c: Likewise * mh/mhpath.c: Likewise * mh/pick.c: Likewise * mh/refile.c: Likewise * mh/repl.c: Likewise * mh/rmf.c: Likewise * mh/rmm.c: Likewise * mh/scan.c: Likewise * mh/send.c: Likewise * mh/whom.c: Likewise * sieve/sieve.c: Likewise 2003-12-12 Sergey Poznyakoff Temporarily switched to the back-up repository on mirddin. Change map: Date from Date to Repository ======== ======= ========== 1999-09-10 2003-12-01 Savannah 2003-12-04 2003-12-25 Mirddin 2003-12-05 Sergey Poznyakoff * mailbox/imap/mbox.c (mailbox_imap_open): Bugfix. Thanks Stephen Bylo <Stephen.Bylo@radixs.com> for reporting. 2003-12-04 Sergey Poznyakoff * mh/mhn.c (stream_getline): Bugfix * mailbox/parse822.c (parse822_route_addr): Handle empty addresses. Patch provided by Rob Casey <rob.casey@bluebottle.com> * mailbox/smtp.c (smtp_send_message): Send sender and receipient addresses enclosed in angle brackets. * mailbox/testsuite/Addrs: Fixed null address test. 2003-12-01 Sergey Poznyakoff * mailbox/sendmail.c (sendmail_send_message): Don't close the descriptor if it happens to make a part of tunnel pipe. 2003-11-28 Sergey Poznyakoff * mailbox/argcv.c (argcv_escape_char,escape_copy): Bugfix 2003-11-04 Sergey Poznyakoff * mh/anno.c (main): Remove trailing colon from the component name. 2003-11-04 Sergey Poznyakoff * mailbox/rfc2047.c (rfc2047_decode): Bugfix. * mh/mh_argp.c (mh_argp_parse): Changed prototype. * mh/mh_getopt.h: Likewise. * mh/ali.c: Updated calls to mh_argp_parse() * mh/anno.c: Likewise. * mh/comp.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/forw.c: Likewise. * mh/inc.c: Likewise. * mh/install-mh.c: Likewise. * mh/mark.c: Likewise. * mh/mhl.c: Likewise. * mh/mhn.c: Likewise. * mh/mhparam.c: Likewise. * mh/mhpath.c: Likewise. * mh/pick.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/send.c: Likewise. * mh/sortm.c: Likewise. * mh/whatnow.c: Likewise. * mh/whom.c: Likewise. 2003-11-04 Sergey Poznyakoff * mailbox/parse822.c: Be more liberal in parsing local parts. * mh/ali.c (getcols): Return default of 80 columns if both ioctl() and getenv() fail. (ali_print_name_list): Bugfix. (main): In -user mode, print the argument verbatim if it is not a member of any alias. * mh/mh_alias.l (pop_source): Always free ali_filename. Grammar: Bugfixes. (mh_alias_read): Provide a debugging hook (ali_verbatim): New function. * mh/mh_alias.y: Fixed grammar. (ali_member): Compare addresses if strcmp() fails. * mh/mh.h (ali_verbatim): New function. * examples/pop3client.c: Added missing includes 2003-10-28 Sergey Poznyakoff * mail/mail.c: Implemented -a (--append) option. * mail/mail.h (mail_sendheader,send_append_header) (send_append_header2): New functions. * mail/send.c: Likewise. * mail/table.c: New command "sendheader" 2003-10-27 Alain Magloire * mailbox/mapfile_stream.c(_mapfile_size): Only call msync() if the file was also open with PROT_WRITE. (_mapfile_flush): Ditto. 2003-10-25 Sergey Poznyakoff * mailbox/list.c (list_do): Bugfix 2003-10-24 Sergey Poznyakoff * mailbox/list.c (list_do): Rewritten using iterators. * mh/mh_alias.l: Resolve a conflict between the angle bracket indicating file inclusion and the one starting a valid RFC822 address. * mh/mh_alias.y: Allow for full RFC822 addresses. 2003-10-18 Sergey Poznyakoff * pop3d/quit.c (pop3d_fix_mark): Use only valid C comments. Fixed erroneous format specification. Format X-Expire-Timestamp value only if necessary. * pop3d/pop3d.c (options): Minor fix in help line wording. (pop3d_parse_opt): Fixed duplicate case. * pop3d/capa.c: Indicate login-delay capability. * pop3d/logindelay.c (login_delay_capa): New function. * pop3d/pop3d.h: Likewise. 2003-10-17 Alain Magloire First try of implementing CAPA EXPIRE in pop3d. * pop3d/expire.c: New file. * pop3d/pop3d.c: New options --expire, expire new gloval variable. * pop3d/quit.c (pop3d_fix_mark): Set the X-Expire-Timestamp for RETR messages. * pop3d/capa.c: Advertise EXPIRE. * pop3d/pop3d.h: Declaration of global variale expire. * pop3d/retr.c: Set a flag on downloaded messages. 2003-10-17 Sergey Poznyakoff * mailbox2: It is hopelessly obsolete. Removed. We'd better modify the files "in situ". 2003-10-17 Sergey Poznyakoff * doc/texinfo/programs.texi (pop3d): Documented new option. * examples/timestamp.c: New file. Implements sieve extension test "timestamp". * examples/Makefile.am: Added timestamp.c 2003-10-13 Sergey Poznyakoff * NEWS: Updated * pop3d/logindelay.c: Couple of bugfixes. * pop3d/popauth.c (options): New option --permissions allows to override default permissions on the database file. 2003-10-11 Sergey Poznyakoff * pop3d/logindelay.c: New file * pop3d/Makefile.am: Added logindelay.c * pop3d/pop3d.c: New options --login-delay, --stat-file * pop3d/pop3d.h (check_login_delay,update_login_delay): New functions. * pop3d/quit.c (pop3d_quit): Call update_login_delay(). * pop3d/user.c (pop3d_user): Call check_login_delay(). * mh/mh_format.c (builtin_formataddr): Fixed checking for duplicate addresses. 2003-10-10 Alain Magloire GNU Mailutils 0.4 was released. New code added. * configure.ac: Added include/mailutils/sys/Makefile. * mailbox/pop/Makefile.am (libmu_pop_la_sources): Added all the pop3_*.c code now part of libmu_pop.a * include/mailutils/Makefile.am (pkginclude_HEADERS): Added file pop3d.h (SUBDIRS): New directory sys added. * include/mailutils/sys/Makefile.am: new Makefile.am * example/Makefile.am: pop3client.c Added. * doc/rfc/rfc3206.txt: New publish RFC for POP3 2003-10-10 Alain Magloire * mailbos/pop/pop3_readline.c (pop3_getline): Use stream_sequential_readline() instead of stream_readline() and do not maintain any offsets. * include/mailutils/sys/pop3d.h (struct mu_pop3_work_buf): Remove of the offset field. * examples/pop3client.c: Changes to check for errors. 2003-10-10 Sergey Poznyakoff * configure.ac: Raised patchlevel number * mail/print.c (mail_print): Pass MSG_SILENT flag. * pop3d/pop3d.c: New option --undelete tells pop3d to undelete all delete messages on startup. * pop3d/user.c: Handle undelete_on_startup flag. * pop3d/extra.c (pop3d_mark_deleted,pop3d_is_deleted) (pop3d_unset_deleted,pop3d_undelete_all): New functions * pop3d/pop3d.h: Likewise. * pop3d/dele.c: Use new pop3d_.*_deleted calls. * pop3d/list.c: Likewise. * pop3d/quit.c: Likewise. * pop3d/retr.c: Likewise. * pop3d/rset.c: Likewise. * pop3d/stat.c: Likewise. * pop3d/top.c: Likewise. * pop3d/uidl.c: Likewise. 2003-10-09 Alain Magloire Possible use: list_count (list, &total); array = malloc (total *(sizeof *array)); if (users != NULL) list_to_array (list, users, total, &total); copy in the array the number of items. * mailbox/list.c (list_to_array): New function. * include/mailutils/list.h (list_to_array): Declaration. 2003-10-09 Alain Magloire Scenario: the attribute_set_delete() use the header field "Status: d" to store the information. During a POP session, if messages had the "Status: D", the messages would be deleted during the update state(QUIT), not what is expected. Only messages mark deleted with the command DELE, should be deleted. Sergey proposed an implementation, using attribute_xxx_userflag() instead for delete markers. * pop3d/dele.c: Use for attribute_is_userflag() * pop3d/list.c: Use for attribute_is_userflag() * pop3d/retr.c: Use for attribute_is_userflag() * pop3d/rset.c: Use for attribute_is_userflag() * pop3d/top.c: Use for attribute_is_userflag() * pop3d/uidl.c: Use for attribute_is_userflag() * pop3d/pop3d.h (POP3_ATTRIBUTE_DELE): New define. * pop3d/quit.c (pop3d_fix_mark): Use for attribute_is_userflag() (pop3d_quit): Call to pop3d_fix_mark. 2003-10-07 Alain Magloire Reuse the mailutils mu_debug_t object to do debug tracing no need to reinvent another scheme. * include/mailutils/pop3.h: New declaration mu_pop3_set_debug. * include/mailutils/sys/pop3.h: new field mu_debug_t in structure. * mailbox/pop/pop3_debug.c: Use of mu_debug_t object. * examples/pop3client.c: Fix sigsegv and print error messages. 2003-10-06 Alain Magloire * mailbox/pop/pop3_stls.c: New file. * mailbox/pop/pop3_pass.c: Obscure the buffer with the passwd for security reasons. * mailbox/pop/pop3_apop.c: Obscure the buffer with the digest for security reasons. * include/mailutils/pop3.h: Declaration mu_pop3_stls(). * include/mailutils/sys/pop3.h: New states added to accomodate STLS command. * doc/texinfo/pop3.texi: Corrected some typos. 2003-10-06 Sergey Poznyakoff * configure.ac: Raised version number to 0.4 * lib/getopt.c: Moved to ... * mailbox/getopt.c: ... here * lib/getopt1.c: Moved to ... * mailbox/getopt1.c: ... here * lib/Makefile.am: Removed getopt. * mailbox/Makefile.am: Added getopt. * m4/getopt.m4: New file * m4/mu_libobj.m4 (MU_HEADER): Prevent multiple inclusions. * m4/Makefile.am: Added getopt.m4 * imap4d/imap4d.h: Added missing includes * mail/mail.h: Likewise * mail/util.c: Likewise * mailbox/ticket.c: Likewise * auth/tls.c: Likewise * from/from.c: Likewise * readmsg/readmsg.c: Likewise * readmsg/readmsg.h: Likewise * mail/decode.c (display_message): Bugfix * mailbox/locale.c (mu_charset_lookup): Bugfix * mailbox/mailutils-config.c: Minor fix in the help string. * mh/repl.c: Likewise. * mh/mh.h (mh_format_str): Added prototype. * NEWS: Updated 2003-10-05 Alain Magloire * examples/pop3client.c: A simple example illustrating the use of the low level POP3 function calls. 2003-10-05 Alain Magloire Implementation of the lower level functions for POP3 in a separate library. This the first draft, the code is not yet enabled in the Makefile.am * mailbox/pop/pop3_apop.c: APOP * mailbox/pop/pop3_capa.c: CAPA * mailbox/pop/pop3_carrier.c: TCP stream. * mailbox/pop/pop3_connect.c: * mailbox/pop/pop3_create.c: * mailbox/pop/pop3_debug.c: * mailbox/pop/pop3_dele.c: DELE * mailbox/pop/pop3_destroy.c: * mailbox/pop/pop3_disconnect.c: * mailbox/pop/pop3_lista.c: LIST * mailbox/pop/pop3_list.c: LIST * mailbox/pop/pop3_noop.c: NOOP * mailbox/pop/pop3_pass.c: PASS * mailbox/pop/pop3_quit.c: QUIT * mailbox/pop/pop3_readline.c: * mailbox/pop/pop3_response.c: * mailbox/pop/pop3_retr.c: RETR * mailbox/pop/pop3_rset.c: RSET * mailbox/pop/pop3_sendline.c: * mailbox/pop/pop3_stat.c: STAT * mailbox/pop/pop3_stream.c: * mailbox/pop/pop3_timeout.c: * mailbox/pop/pop3_top.c: TOP * mailbox/pop/pop3_uidl.c: UIDL * mailbox/pop/pop3_uidla.c: UIDL * mailbox/pop/pop3_user.c: USER * include/mailutils/pop3.h: Declaration of the public functions. * include/mailutils/sys/pop3.h: Declaration of the internal functions and structures. * doc/texinfo/pop3.texi: updated. 2003-10-05 Alain Magloire When list_destroy() is called, we need to provide also a way to free the item is necessary. To do this we added a new function: extern int list_set_destroy_item __P ((list_t list, void (*destoy_item) __P((void *)))); This function let us register a function to call on the item when the list is being destroy. Unresolved Problems: What about list_remove() and list_replace() ? should destroy_item() be called when the item is no longer in the list ? * mailbox/list.c (list_destroy) : Call to list->destroy_item() when the data is free(). (list_set_destroy_item): New function. * mailbox/include/list0.h (destroy_item): New field in the structure. * include/mailutils/list.h (list_set_destroy_item): New declaration. 2003-09-27 Wojciech Polak * mailutils.spec.in: Updated and moved to ... * scripts/mailutils.spec.in: ... here. * scripts/Makefile.am: Updated. * configure.ac: Likewise. * Makefile.am: Likewise. 2003-09-27 Sergey Poznyakoff * configure.ac: Moved fgetpwent from AC_CHECK_FUNCS to MU_CHECK_FUNCS. * lib/Makefile.am: Removed fgetpwent.c * mailbox/Makefile.am: Added fgetpwent.c * lib/fgetpwent.c: Moved to ... * mailbox/fgetpwent.c: ... here * imap4d/imap4d.h: Added missing include * imap4d/search.c (imap4d_search0): Use case-insensitive comparison * imap4d/status.c (status_get_handler): Likewise * imap4d/util.c: Fixed wording of the comment. * mailbox/locker.c (_locker_destroy_private): Bugfix 2003-09-25 Sergey Poznyakoff * mailbox/munre.c (munre_set_regex): Bugfix again. * mailbox/filter_trans.c (qp_decode): Bugfix. According to RFC, underscore represents space. * mailbox/rfc2047.c (rfc2047_decode): Ignore whitespace between the encoded segments. * mailbox/testsuite/RFC2047: Reflect the recent changes. * NEWS: Updated * mail/mail.h (mail_nounfold,mail_unfold) (mail_header_is_unfoldable): New functions. * mail/print.c (mail_print_msg): Unfold the header value, if required. * mail/retain.c: Rewritten. (mail_nounfold,mail_unfold) (mail_header_is_unfoldable): New functions. * mail/table.c: Added new command words. * mail/mail.c: Default to "unfold subject" * mail/util.c (util_slist_remove): New function. * auth/lbuf.c: Added missing includes. * auth/lbuf.h: Likewise. 2003-09-22 Sergey Poznyakoff * mailbox/munre.c (munre_set_regex): Bugfix. * mh/replgroupcomps: Added trailing newline 2003-09-21 Sergey Poznyakoff Added decoding of RFC 2047 headers to MUA programs (mail and mh). Fixed incorrect session termination in imap and pop clients. * mailbox/locale.c: New file. Contains locale-dependent functions. * mailbox/Makefile.am: Added locale.c * include/mailutils/mutil.h (mu_charset_lookup): New function. * mail/from.c (mail_from0): Use util_rfc2047_decode for "From" and "Subject" headers. * mail/mail.c (main): Set default value for the "charset" variable. * mail/mail.h (util_rfc2047_decode): New function. * mail/util.c: Likewise. * mail/print.c: Use util_rfc2047_decode for printing headers. * doc/texinfo/programs.texi: Documented "charset" mail variable * mh/mh_format.c (mh_format): Use header_aget_value_unfold when retrieving the header value. (builtin_decode): New function. Implements (decode). * mh/README: Updated * mailbox/imap/folder.c (authenticate_imap_sasl_anon): Fixed typo in debug output. (folder_imap_open): Issue LOGOUT if all the authentication methods have failed. * mailbox/imap/mbox.c (imap_get_fd): Removed. Use imap_get_fd2 instead. * mailbox/pop/mbox.c (_pop_user): Do not close the stream on authentication failures. * imap4d/login.c: Minor fix 2003-09-20 Sergey Poznyakoff Install under mailutils/gnu only those headers which are missing on the system. Include regex to libmailbox if the system's libc lacks it. Add new functions for handling reply subject headers. * Makefile.am: Added headers * m4/mu_libobj.m4 (MU_HEADER,MU_FINISH_LINKS): New macros * configure.ac: Use MU_HEADER and MU_FINISH_LINKS where needed * m4/regex.m4: Likewise * dotlock/Makefile.am: Fixed INCLUDES * lib/Makefile.am: Updated * mailbox/Makefile.am: Likewise. * examples/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * include/mailutils/gnu/Makefile.am: Likewise. * libsieve/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * mail.remote/Makefile.am: Likewise. * mailbox/imap/Makefile.am: Likewise. * mailbox/maildir/Makefile.am: Likewise. * mailbox/mbox/Makefile.am: Likewise. * mailbox/mh/Makefile.am: Likewise. * mailbox/pop/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * mh/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * readmsg/Makefile.am: Likewise. * sieve/Makefile.am: Likewise. * from/Makefile.am: Likewise. * comsat/Makefile.am: Likewise. * auth/Makefile.am: Likewise. * headers: New directory * headers/Makefile.am: New file * headers/posix/Makefile.am: New file * include/mailutils/gnu/argp.h: Moved to ... * headers/argp.h: ... here * include/mailutils/gnu/getopt.h: Moved to ... * headers/getopt.h: ... here * lib/regex.h: Moved to ... * headers/regex.h: ... here * lib/posix/regex.h: Moved to ... * headers/posix/regex.h: ... here * lib/posix/Makefile.am: Removed * lib/posix/.cvsignore: Removed * lib/posix: Removed * lib/regex.c: Moved to ... * mailbox/regex.c: ... here * include/mailutils/gnu/.cvsignore: Updated * mailbox/munre.c: New file * include/mailutils/mutil.h (munre_set_regex) (munre_subject): New functions. * mail/followup.c: Use munre_subject() and util_reply_prefix(). * mail/reply.c: Likewise * mail/mail.c (struct argp_option options): Removed irrelevant OPTION_DOC. (main): Set default replyprefix * mail/mail.h (util_reply_prefix): New function * mail/util.c: Likewise (util_setenv): A hack to properly handle "replyregex". * mail/var.c (run_editor): Fixed return type. * mh/mh_format.c (builtin_unre): Use munre_subject() (builtin_isreply,builtin_reply_regex): New functions * mh/mh.h (mh_set_reply_regex): New function. * mh/mh_init.c: Likewise. * mh/mh_global.c (mh_read_profile): Read Reply-Regex * mh/README: Updated * mh/replcomps: Updated * mh/replgroupcomps: Updated * doc/texinfo/programs.texi: Updated 2003-09-18 Sergey Poznyakoff * mailbox/mh/mbox.c (_mh_message_delete): Zero out the msg_pool slot occupied by the message being deleted. (mh_pool_lookup): On success return the address of the msg_pool slot. * pop3d/pop3d.h (process_cleanup): New function * pop3d/signal.c: Likewise * pop3d/pop3d.c (pop3d_daemon): Collect finished children synchronously. 2003-09-16 Sergey Poznyakoff * mh/repl.c (opt_handler): Force RCPT_ALL if --group is given. 2003-09-11 Sergey Poznyakoff * mailbox/imap/folder.c (authenticate_imap_login): Do not close the stream on authentication failures. (authenticate_imap_select): Bugfix (imap_parse): Use MU_ERR_AUTH_FAILURE where appropriate. * doc/texinfo/programs.texi: Updated 2003-09-10 Sergey Poznyakoff * include/mailutils/errno.h (MU_ERR_BAD_AUTH_SCHEME) (MU_ERR_AUTH_FAILURE): New error codes. * mailbox/muerrno.c: Likewise. * mailbox/include/auth0.h (struct _authority): Keep a list of authentication methods. * mailbox/auth.c (authority_authenticate): Authentication methods are now stored as a list. * mailbox/mailbox.c (mailbox_create): Bugfix. Return failure if the folder cannot be created. * mailbox/imap/folder.c: Allow user to specify several possible authentication methods after AUTH= (an extension to RFC 2192). (folder_imap_get_authority): Select an appropriate authentication mechanism if AUTH=*, as suggested by RFC. * mailbox/pop/folder.c (folder_pop_get_authority): Return an appropriate error code. * mh/rmf.c (rmf): Bugfix. 2003-09-10 Sergey Poznyakoff * mailbox/imap/folder.c (read_capa): New function. (check_capa): Call read_capa. (authenticate_imap_login): Check for LOGINDISABLED. (tls): Reread the capabilities after successfull TLS negotiation. 2003-09-09 Sergey Poznyakoff * include/mailutils/address.h (address_aget_personal): Added missing prototype. 2003-09-05 Wojciech Polak * mailbox/wicket.c: Moved stat() (checking the file permissions) to wicket_create(). * sieve/sieve.c (tickets_default): New variable. (main): Check the tickets_default. 2003-09-05 Sergey Poznyakoff * lib/mu_dbm.c (mu_fcheck_perm, mu_check_perm): Return MU_ERR_UNSAFE_PERMS when appropriate. * mailbox/muerrno.c: Fixed indentation. * pop3d/popauth.c: Use mu_strerror. * mh/ali.c (main): Bugfix. Lists were not initialized. * mh/mh_alias.l (push_source): Honor Path variable. 2003-09-04 Wojciech Polak * include/mailutils/errno.h: Added MU_ERR_UNSAFE_PERMS. * mailbox/muerrno.c: Likewise. * mailbox/wicket.c (get_ticket): Check file permissions. 2003-09-02 Wojciech Polak * mailbox/pop/mbox.c (pop_get_message): Check UIDL capability before using pop_uidl(). 2003-09-02 Sergey Poznyakoff * mail/mail.c: Fixed description of --file argument. * mailbox/filter_trans.c (qp_decode): Fixed bug that could overflow the receiving buffer. 2008-09-02 Wojciech Polak * mail/next.c (mail_next): Check return code from msgset_parse to prevent segmentation fault. * mail/previous.c (mail_previous): Likewise. 2008-09-01 Wojciech Polak * pop3d/pop3d.c (pop3d_daemon): Added startup notification. * imap4d/imap4d.c (imap4d_daemon): Likewise. 2003-08-30 Wojciech Polak * auth/tls.c (mu_check_tls_environment): Improved diagnostics. * mailbox/pop/mbox.c (POP_AUTH_USER_ACK): Protect password in debug mode (PASS ***). 2003-08-29 Sergey Poznyakoff * imap4d/bye.c: Do not attempt to write to the output stream if a signal was caught. * imap4d/signal.c (imap4d_signal): Minor fix * pop3d/extra.c (pop3d_abquit): Flush and close the mailbox only unless we're not in the AUTHORIZATION state. Do not attempt to write to the output stream if a signal was caught. * include/mailutils/errno.h (MU_ERR_NOUSERNAME) (MU_ERR_NOPASSWORD): New error codes. * mailbox/muerrno.c: Likewise. * mailbox/mailbox.c (mailbox_flush): Test the first argument. * mailbox/ticket.c (ticket_pop): Fallback to command line prompt if _pop() failed and stdin is connected to a terminal. * mailbox/imap/folder.c: Provide a better diagnostics. * mailbox/pop/mbox.c (_pop_user): Send QUIT before dropping the connection. Provide a better diagnostics. * sieve/sieve.c: Destroy the mailbox if the attempt to open it has failed. 2003-08-29 Wojciech Polak * mailbox/pop/mbox.c (pop_capa): New function. Moved CAPA support to pop_capa. Conform to RFC 2595: reissue CAPA after successful STLS negotiation. (tls): Renamed to pop_stls(). 2003-08-29 Sergey Poznyakoff * auth/gsasl.c: Lots of fixes. * auth/lbuf.h (_auth_lb_writelines): New function. * auth/lbuf.c: Likewise * imap4d/util.c (util_run_events): Use iterator instead of list_do. Iterators are safer. 2003-08-28 Sergey Poznyakoff Implemented the TLS protocol for IMAP and POP mailboxes. Split libmailbox to the core library (libmailbox) and the protocol implementation libraries (libmu_$PROTONAME). * auth/lbuf.h: New file. * auth/lbuf.c: New file. * auth/tls.c: Implemented client TLS stream. * auth/gsasl.c: Use lbuf stuff. * auth/Makefile.am: Updated. * mailbox/mbx_file.c: Moved to ... * mailbox/mbox/file.c: ... here * mailbox/mbox/Makefile.am: Changed target to lib_LTLIBRARY * mailbox/mh/Makefile.am: Likewise * mailbox/imap/Makefile.am: Likewise * mailbox/pop/Makefile.am: Likewise * mailbox/maildir/Makefile.am: Likewise * dotlock/Makefile.am: Adopted _LDADD for the new library layout. * examples/Makefile.am: Likewise * from/Makefile.am: Likewise * guimb/Makefile.am: Likewise * imap4d/Makefile.am: Likewise * mail/Makefile.am: Likewise * mailbox/Makefile.am: Likewise * messages/Makefile.am: Likewise * mh/Makefile.am: Likewise * pop3d/Makefile.am: Likewise * readmsg/Makefile.am: Likewise * sieve/Makefile.am: Likewise * comsat/Makefile.am: Likewise * frm/Makefile.am: Likewise * mail.local/Makefile.am: Likewise * configure.ac: Moved Kerberos libs to SERV_AUTHLIBS. * Makefile.am: Changed the order of SUBDIRS * mailbox/mailutils-config.c: --link part rewritten to reflect the new library layout. * mailbox/imap/folder.c: Implemented client side TLS * mailbox/imap/mbox.c (imap_expunge): Use EXPUNGE instead of closing and reopening the mailbox. This way the user is not prompted twice for his credentials. Besides, it appears to be faster, in spite of what the comment before the function said. * mailbox/pop/mbox.c: Implemented client side TLS. * mailbox/include/imap0.h (struct _f_imap): New members capav and capac to hold the array of capabilities. * examples/decode2047.c (ISPRINT): Fixed. * from/from.c: Use "tls" command line capability. * frm/frm.c: Likewise * messages/messages.c: Likewise. * mail/mail.c: Likewise. * readmsg/readmsg.c: Likewise. * sieve/sieve.c: Likewise. * mail/mail.h: Include tls.h * readmsg/readmsg.h: Likewise. * include/mailutils/stream.h (stream_get_fd2): New function. (stream_set_fd): Changed type of the second arg. * mailbox/stream.c: Likewise. * mailbox/include/stream0.h (struct _stream): Changed _get_fd member. * mailbox/body.c: Fixed _get_fd methods. * mailbox/file_stream.c: Likewise. * mailbox/filter.c: Likewise. * mailbox/message.c: Likewise. * mailbox/mime.c: Likewise. * mailbox/mbox/mbox.c: Likewise. * mailbox/mapfile_stream.c: Likewise. * mailbox/tcp.c: Likewise. * include/mailutils/tls.h (tls_stream_create_client) (tls_stream_create_client_from_tcp): New functions. (mu_tls_enable): New variable * libmu_scm/mailutils.scm.in: Modified for the new library layout. * mailbox/sendmail.c: Added missing includes * mailbox/smtp.c: Likewise. * mailbox/pop/folder.c: Minor wording change. * NEWS: Updated * TODO: Updated 2003-08-27 Sergey Poznyakoff * NEWS: Updated * mailbox/mime.c (_mime_parse_mpart_message): Allow for empty part body. * examples/mimetest.c: Print the number of lines along with the message sizes. * testsuite/spool/mbox1: Added fifth message for testing empty MIME parts. * mailbox/testsuite/Mime: Updated for the new contents of mbox1 * frm/testsuite/frm/test.exp: Likewise. * from/testsuite/from/test.exp: Likewise. * imap4d/testsuite/imap4d/examine.exp: Likewise. * imap4d/testsuite/imap4d/expunge.exp: Likewise. * imap4d/testsuite/imap4d/fetch.exp: Likewise. * mail/testsuite/mail/folder.exp: Likewise. * mail/testsuite/mail/write.exp: Likewise. * messages/testsuite/messages/test.exp: Likewise. * readmsg/testsuite/readmsg/test.exp: Likewise. * sieve/testsuite/sieve/header.exp: Likewise. 2003-08-22 Sergey Poznyakoff * examples/mta.c (mta_send): Fixed printing of envelope to addresses. * include/mailutils/address.h (address_format_string): Missed prototype. * mailbox/header.c: Added missing include * mailbox/sendmail.c (sendmail_send_message): Use header and body streams sequentially instead of using message stream. This allows to catch the modified/added headers. * mailbox/smtp.c (smtp_send_message): Likewise. * mh/TODO: Updated * mh/ali.c (main): Minor change. * mh/comp.c (query_mode): Unused variable * mh/folder.c (create_flag): A three-state flag. (_scan): Fixed behavior on non-existing folders. * mh/mh.h: Added new protos * mh/mh_alias.l (yyparse): Forward declaration. * mh/mh_alias.y (yyerror,yylex): Forward declarations. (alias_expand_list,mh_alias_get_internal) (mh_alias_get_address): Get an extra argument (for handling ';' aliases). * mh/mh_global.c (mh_global_sequences_drop): New function * mh/mh_init.c (mh_getyn): Bugfix * mh/mh_stream.c (struct _mhdraft_message.body_start,body_end): Changed type to off_t. * mh/mh_whom.c (mh_alias_expand): New function (scan_addrs): Expand aliases * mh/rmf.c: Switch to +inbox after deleting the current folder. Improved diagnostics. * mh/send.c: Handle aliases. * mh/whom.c (main): Bugfix. 2003-08-21 Sergey Poznyakoff * include/mailutils/iterator.h (iterator_dup): New function * mailbox/iterator.c: Likewise. * include/mailutils/list.h (list_insert): New function. * mailbox/list.c: Likewise. * mh/ali.c: New file * mh/mh_alias.y: New file * mh/mh_alias.l: New file * mh/Makefile.am: Added new files * mh/.cvsignore: Likewise. * mh/mh.h (mh_alias_read,mh_alias_get) (mh_alias_get_address,mh_alias_get_alias) (mh_read_aliase,smh_alias_enumerate): New functions. * mh/mh_getopt.h: Updated * mh/mh_whom.c (scan_addrs): Added support for aliases * mh/mhparam.c: Fixed year in the copyleft header. * mh/whom.c: Added support for aliases. * mh/mh_init.c: Minor cleanup 2003-08-20 Sergey Poznyakoff * comsat/action.c (expand_escape): Use argcv_unescape_char() instead of backslash(). * libsieve/sieve.l: Fixed handling of escape sequences in strings. Thanks Fabrice Bauzac <fabrice.bauzac@wanadoo.fr> for reporting. * mailbox/argcv.c (argcv_unescape_char,argcv_escape_char): New functions. * include/mailutils/argcv.h: Likewise. 2003-08-19 Sergey Poznyakoff * mh/replgroupcomps: New file. * mh/Makefile.am (mhlib_DATA): Added components and replgroupcomps. * mh/repl.c: Implemented -group. * mh/mh_format.c (builtin_in_reply_to): Bugfix. * mh/mh_msgset.c (_mh_msgset_parse): Fixed the semantics of last:N and prev:N. * mh/mh.h: Updated 2003-08-18 Sergey Poznyakoff * mail/mail.h (ml_readline_with_intr): New function. * mail/mailline.c: Likewise. * mail/send.c: Use ml_readline_with_intr() when prompting for header fields. 2003-08-18 Sergey Poznyakoff * pop3d/extra.c (pop3d_abquit): Flush message headers. * NEWS: Updated. * mail/mail.c (main): If the send mode was interrupted by the user, exit with zero status if mailx is set. * doc/texinfo/programs.texi: Updated. 2003-08-18 Sergey Poznyakoff * mail/send.c (mail_send, mail_send0): Use `mailx' to control mailx compatibility mode. Thanks Peter S Galbraith <p.galbraith@globetrotter.net> for the idea. * doc/texinfo/programs.texi: Document `mailx' variable * NEWS: Added entry about `mailx' variable 2003-08-17 Sergey Poznyakoff * mail/send.c (mail_send0): Fixed typo in variable name. * mh/mhparam.c: New file * mh/Makefile.am: Added mhparam * mh/.cvsignore: Likewise. * mh/mh.h (mh_global_profile_iterate): New function * mh/mh_global.c: Likewise. * mh/mh_getopt.c (mh_getopt): Implemented -version option. * mh/README: Updated 2003-08-13 Sergey Poznyakoff * mh/mh_sequence.c (mh_seq_add): Update current_message if the sequence being set is "cur". Free temporary storage. * mh/components: New file * mh/Makefile.am: Added components * mh/mh.h (mh_interactive_mode_p, mh_getyn_interactive): New functions. * mh/mh_init.c (mh_interactive_mode_p, mh_getyn_interactive) (mh_vgetyn): New functions. (mh_real_install): Use mh_getyn_interactive(). * mh/pick.c (main): Use mh_interactive_mode_p(). 2003-08-12 Sergey Poznyakoff * mh/folder.c (_scan): Prompt for creating the folder unless --create was given. * mh/scan.c (main): Display "no messages in ..." warning for empty folders. 2003-08-12 Sergey Poznyakoff * mh/mh_msgset.c (mh_msgset_uids): New function. * mh/mh.h: Likewise. * mh/mark.c (main): Convert msgset to uids. * mh/scan.c (list_message): Output an extra newline only if the formatted buffer does not end with one. 2003-08-12 Sergey Poznyakoff * mail/mail.h (mail_execute): New function. * mail/shell.c (mail_execute): New function. * mail/var.c (run_editor): A wrapper around mail_execute(). (var_shell): Use run_editor. * mh/mh_format.c (print_simple_segment): Bugfix. * mh/replcomps: Improved. 2003-08-11 Sergey Poznyakoff * mh/mh.h (enum mh_opcode): New opcode mhop_nop. * mh/mh_fmtgram.y (fi production): Preserve the result of the last comparison. * mh/mh_format.c (mh_format): Count the newline as output character (for compatibility with other implementations). Set arg_num whe evaluating headers. (mh_format,mh_format_dump): Handle mhop_nop. * mh/repl.c: New option --format. * mail/mail.c (main): set rc by default 2003-08-10 Sergey Poznyakoff * mh/inc.c (opt_handler): Added missing support for -format option. Thanks Peter S Galbraith <p.galbraith@globetrotter.net> for reporting. 2003-08-07 Sergey Poznyakoff * NEWS: Updated * TODO: Updated * include/mailutils/header.h (header_get_value_unfold) (header_aget_value_unfold,header_get_field_value_unfold) (header_aget_field_value_unfold): New functions. * mailbox/header.c: Likewise. * include/mailutils/mutil.h (mu_string_unfold): New function. * mailbox/mutil.c: Likewise. * mailbox/mbox/mboxscan.c (FAST_HEADER): Do not remove intermediate newlines from the folded headers. * frm/frm.c: use header_get_value_unfold * mail/from.c: Likewise. 2003-07-26 Sergey Poznyakoff Done the following from the TODO: -** First argument to mu_auth_fp (and second one to mu_auth_runlist) should be struct mu_auth_data ** instead of void *. -** (sieve) Implement boolean shortcut evaluation for `allof' and `anyof' -* util_strcasestr() from mail/util.c provides the same functionality as i_ascii_casemap_contains() from libsieve/comparator. Merge both versions. Detailed list of changes: * TODO: Updated * configure.ac: Fixed --with-mysql, --with-postgres * include/mailutils/mu_auth.h (mu_auth_fp, mu_auth_runlist): Changed prototypes. * include/mailutils/libsieve.h (struct sieve_runtime_tag): Minor change. * include/mailutils/mutil.h (mu_strcasestr): New function. * auth/mysql.c: Reflect changes to mu_auth_fp * auth/pam.c: Likewise. * auth/pgsql.c: Likewise. * auth/sql.c: Likewise. * auth/tls.c: Likewise. * auth/virtual.c: Likewise. * mailbox/system.c: Likewise. * examples/Makefile.am (INCLUDES): Add mailbox (for getline.h) * examples/mta.c: include getline.h * imap4d/authenticate.c (comp): Minor change * imap4d/fetch.c (send_parameter_list): Minor change * imap4d/util.c (util_strcasestr): Reimplemented via mu_strcasestr() * libsieve/README: Documented boolean shortcuts * libsieve/comparator.c (i_ascii_casemap_contains): Reimplemented via mu_strcasestr() * libsieve/prog.c (sieve_code_anyof, sieve_code_allof): New functions. (struct check_arg): Minor change * libsieve/runtime.c (instr_nop): New function (instr_allof, instr_anyof): Removed * libsieve/sieve.h (sieve_code_anyof,sieve_code_allof): New functions. (instr_allof, instr_anyof): Removed * libsieve/sieve.y: Implemented boolean shortcuts for ALLOF and ANYOF * mail/mail.h (ml_readline, readline): Removed const from the declaration. * mail/mailline.c: Likewise. * mailbox/body.c (lazy_create): Removed unused function. * mailbox/iterator.c (iterator_get_list): Minor change * mailbox/mailcap.c: include <mailutils/stream.h> * mailbox/mbx_default.c (is_proto): Minor change * mailbox/rfc2047.c (insert_quoted): Minor change * mailbox/mu_auth.c (mu_auth_runlist,mu_auth_nosupport): Changed type of the first argument. * mailbox/mutil.c (mu_strcasestr): New function. * pop3d/pop3d.h (pop3d_bye): Added missing prototype 2003-07-22 Sergey Poznyakoff * mailbox/argcv.c: Implemented escaping/unescaping of non-printable characters * TODO: Updated. * NEWS: Updated * mh/Makefile.am (mh_finish_install): Fixed. Thanks Andreas Voegele <voegelas@gmx.net> for the patch. 2003-07-16 Sergey Poznyakoff * NEWS: Updated * TODO: Updated * examples/listop.c: New file. A test shell for list operations. * examples/Makefile.am: Added listop.c * include/mailutils/iterator.h (iterator_get_list): New function. * mailbox/iterator.c: Rewritten to reduce the time of list traversal. * mailbox/list.c (list_remove): Call iterator_advance. * mailbox/include/iterator0.h (struct _iterator): Rewritten (iterator_advance): New function. * mailbox/include/list0.h (struct _list): Keep the linked list of associated iterators. * mailbox/testsuite/lib/mailbox.exp (mailbox_prog_start) (mailbox_prog_command,mailbox_prog_stop,mailbox_prog_test): New functions. * mailbox/testsuite/mailbox/list.exp: New file. Tests generic list operations. * mailbox/testsuite/mailbox/DISTFILES: Added list.exp 2003-07-08 Sergey Poznyakoff * configure.ac: Raised version number * NEWS: Started entry for 0.3.2 * comsat/comsat.c: Bugfix. * pop3d/apop.c: Provide more extensive diagnostics. 2003-07-01 Sergey Poznyakoff * auth/pam.c: Minor indentation fix. * comsat/comsat.c (notify_user): Bugfix: do not pass size_t instead of off_t. * mail.local/main.c (deliver): Likewise. 2003-06-26 Sergey Poznyakoff * mailbox/mu_auth.c (mu_auth_register_module): Fixed memory overrun. * pop3d/popauth.c: New option --create 2003-06-23 Sergey Poznyakoff * doc/Readme.mysql: Removed. File not relevant anymore. * include/mailutils/nls.h: Minor change. * mail/mail.c (parse_opt): Use util_cache_command, except for -n, which should be executed immediately. (main): Run cached commands after sourcing the startup files. * mail/mail.h (util_cache_command,util_run_cached_commands): New functions. * mail/util.c: Likewise. 2003-06-22 Alain Magloire * doc/texinfo/pop3.texi: First draft documenting the new low level API for POP3. 2003-06-21 Wojciech Polak * mailutils.spec.in: Major changes. Added new packages, changed package names. Thanks Bennett Todd <bet@rahul.net> for testing. 2003-06-11 Sergey Poznyakoff * autogen.sh: A hack to force automake to install COPYING file. * Makefile.am: Changed AUTOMAKE_OPTIONS, added COPYING.LIB to EXTRA_DIST. * README: Minor change. * COPYING.FDL: Moved to ... * doc/texinfo/COPYING.DOC: ... here * doc/texinfo/Makefile.am: Added COPYING.DOC. * mh/mhn.c (store_handler): Fixed indentation. 2003-06-07 Wojciech Polak * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.12.1. (INTLINCS): Added `-I../intl'. * m4/Makefile.am: Added nls.m4 and po.m4. * po/Makevars: Added MSGID_BUGS_ADDRESS. 2003-06-07 Sergey Poznyakoff * NEWS: Updated 2003-06-02 Sergey Poznyakoff * imap4d/fetch.c (fetch_internaldate): Bugfix. Coredumped on invalid dates. 2003-05-28 Sergey Poznyakoff * mh/mhn.c (store_handler): Honor the `name' attribute of the Content-Type header. 2003-05-26 Sergey Poznyakoff * imap4d/auth_gss.c (auth_gssapi): Check return codes from gss_wrap, gss_unwrap. * NEWS: Added entry for 0.3.1 * mh/mhn.c (_message_is_external_body): Check subtype before dereferencing it. 2003-05-24 Alain Magloire * configure.ac: Check for "long long" and "long double". * lib/snprintf.c: Change to be under LGPL not GPL. (vsnprintf): implement "%lld", "%qd", "%Lg" * lib/snprintf.h: New macro LONG_LONG, LONG_DOUBLE default to long long, long double. 2003-05-20 Sergey Poznyakoff * imap4d/auth_gss.c (auth_gssapi): Do not output surplus text after the '+'. Don't use strdup as the username is not zero terminated. 2003-05-19 Wojciech Polak * mailbox/pop/mbox.c: Moved variable `capa' to struct _pop_data. 2003-05-14 Wojciech Polak * mailbox/pop/mbox.c: Added the CAPA support (to determine any protocol extension). * TODO: Updated. 2003-04-30 Wojciech Polak * doc/texinfo/mailutils.texi: Changed @dircategory according to the GNU Directory. * po/POTFILES.in: Added auth/mysql.c and auth/pgsql.c. 2003-04-23 Sergey Poznyakoff * configure.ac: Renamed --enable-mysql to --with-mysql. Added --with-postgres option. Use AC_FUNC_MALLOC and AC_FUNC_REALLOC instead of old jm_* versions. * README: Documented --with-mysql and --with-postgres * auth/pgsql.c: New file. * auth/mysql.c: New file. * auth/sql.h: New file. * auth/Makefile.am: Added new files. * auth/sql.c: Moved mysql-specific code to mysql.c * m4/lib.m4: New file. * m4/malloc.m4: Removed. * m4/realloc.m4: Removed. * m4/Makefile.am: Added lib.m4, removed malloc.m4 and realloc.m4 * lib/xmalloc.c: Adjusted for use with new AC_CHECK_ macros. * include/mailutils/mu_auth.h: Include <mailutils/types.h>, protect the file contents by #ifndef .. #endif * mailbox/mu_argp.c (mu_conf_option): Reflect HAVE_PGSQL 2003-04-22 Sergey Poznyakoff * mailbox/imap/folder.c (imap_literal_string): Bugfix. Literal length may be {0}. 2003-04-18 Sergey Poznyakoff * mailbox/imap/folder.c (imap_string): Bugfix. Handle numbers. * mh/mhn.c (mhn_store_command): Bugfix. Properly use message part numbers. 2003-04-11 Sergey Poznyakoff * mailbox/filter_trans.c (qp_decode): Bugfix. 2003-04-03 Sergey Poznyakoff * examples/base64.c (main): Use custom ISPRINT macro so we don't depend on the current locale settings. * examples/decode2047.c (print): Likewise. * testsuite/lib/mailutils.exp: Set LC_ALL to C before proceeding. 2003-04-02 Sergey Poznyakoff * mh/mhn.c (normalize_path): Bugfix. 2003-03-29 Sergey Poznyakoff Minor changes to avoid duplicating some symbols (namely argp_program_version and argp_program_bug_address). This allows the package to build on MacOS. * include/mailutils/argp.h (mu_argp_init): New function. * mailbox/mu_argp.c: Likewise. * comsat/comsat.c (main): Use mu_argp_init. * frm/frm.c: Likewise. * from/from.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.c: Likewise. * mail/mail.c: Likewise. * mail.local/main.c: Likewise. * mail.remote/mail.remote.c: Likewise. * mailbox/mailutils-config.c: Likewise. * messages/messages.c: Likewise. * mh/anno.c: Likewise. * mh/comp.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/forw.c: Likewise. * mh/inc.c: Likewise. * mh/install-mh.c: Likewise. * mh/mark.c: Likewise. * mh/mhl.c: Likewise. * mh/mhn.c: Likewise. * mh/mhpath.c: Likewise. * mh/pick.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/send.c: Likewise. * mh/sortm.c: Likewise. * mh/whatnow.c: Likewise. * mh/whom.c: Likewise. * pop3d/pop3d.c: Likewise. * pop3d/popauth.c: Likewise. * readmsg/readmsg.c: Likewise. * sieve/sieve.c: Likewise. * dotlock/dotlock.c: Likewise. * mail.local/mail.local.h: include <sys/types.h> (necessary for Darwin). * mail/mail.h (struct message_set): Changed type fo msg_part to size_t. * libsieve/comparator.c (i_ascii_casemap_contains): Fixed obsolete label usage. * THANKS: Added Timothy Carpenter 2003-03-27 Sergey Poznyakoff * mailbox/filter_trans.c (_hexdigits): Must be zero-terminated, otherwise the native Darwin loader refuses to load it. (qp_decode): Bugfix: in accordance with rfc1892 a sequence of whitespace is allowed in an encoded string provided that it is followed by a printable character. (qp_encode): Preserve trailing whitespace. * include/mailutils/nls.h [!ENABLE_NLS]: Provide defines for dgettext and ngettext. * mailbox/argp-parse.c: Include <mailutils/nls.h> * mh/mhn.c (mhn_store_command): If no message part is available ignore %p and %P metacharacters. (store_handler): Unlink the file if it exists. 2003-03-26 Sergey Poznyakoff * mailbox/mu_auth.c (mu_auth_data_alloc): Fixed COPY macro. * mh/mhn.c (main): Ignore sighups. * mh/mh_format.c (builtin_formataddr): Bugfix. 2003-03-26 Sergey Poznyakoff * include/mailutils/errno.h (MU_ERR_FAILURE): New macro * mailbox/muerrno.c: Likewise * mailbox/mutil.c (mu_rfc2822_references,mu_rfc2822_in_reply_to): Return MU_ERR_FAILURE on error. * mh/mh_format.c (builtin_concat): Extra safety check (builtin_in_reply_to,builtin_references): Check return value from the underlying library calls. * mh/mh_msgset.c (_mh_msgset_parse): Accept "all" message spec on folders with only one message. * mh/mhn.c: Print information about the external body parts. * mh/whom.c (mh_option): Bugfix 2003-03-24 Sergey Poznyakoff * mh/mhn.c (stream_getline,parse_content_type): A couple of bugfixes. 2003-03-24 Sergey Poznyakoff * mh/mhn.c: Implemented external-body. * mh/TODO: Updated * configure.ac (ATTRIBUTE_UNUSED): Renamed to ARG_UNUSED to avoid confusion. * auth/pam.c: Use ARG_UNUSED where necessary * lib/daemon.c: Likewise. * mail/decode.c: Likewise. * mail/exit.c: Likewise. * mail/folders.c: Likewise. * mail/if.c: Likewise. * mail/inc.c: Likewise. * mail/list.c: Likewise. * mail/mail.c: Likewise. * mail/tag.c: Likewise. * mail/var.c: Likewise. * mail/version.c: Likewise. * mail/mailline.c: Likewise. * mail/msgset.y: Likewise. * mail/quit.c: Likewise. * mail/source.c: Likewise. * mail/summary.c: Likewise. * mailbox/auth.c: Likewise. * mailbox/body.c: Likewise. * mailbox/filter_trans.c: Likewise. * mailbox/monitor.c: Likewise. * mailbox/parsedate.y: Likewise. * mailbox/stream.c: Likewise. * mailbox/url_file.c: Likewise. * mailbox/url_path.c: Likewise. * mailbox/url_sendmail.c: Likewise. * mailbox/mh/folder.c: Likewise. * mailbox/mh/mbox.c: Likewise. * mailbox/mh/url.c: Likewise. * mailbox/pop/mbox.c: Likewise. * mailbox/pop/url.c: Likewise. * mailbox/imap/folder.c: Likewise. * mailbox/imap/url.c: Likewise. * mailbox/mbox/folder.c: Likewise. * mailbox/mbox/url.c: Likewise. * imap4d/capability.c: Likewise. * imap4d/check.c: Likewise. * imap4d/close.c: Likewise. * imap4d/fetch.c: Likewise. * pop3d/auth.c: Likewise. * pop3d/signal.c: Likewise. 2003-03-22 Jordi Mallach * mailbox/Makefile.am (EXTRA_DIST): Added parsedate.y. 2003-03-22 Sergey Poznyakoff * configure.ac: Raised version number to 0.3.1 Define macro ATTRIBUTE_UNUSED. * mailbox/parsedate.y: New file * mailbox/.cvsignore: Updated * mailbox/Makefile.am: Updated * mh/Makefile.am: Minor formatting change. * mh/README: Updated. * mh/TODO: Updated. * mh/pick.c: Implemented --after and --before. * mh/pick.h: Likewise. * mh/pick.y: Likewise. * mail/from.c (mail_from0): Bugfix. * include/mailutils/mutil.h (mu_parse_date): New function. 2003-03-20 Sergey Poznyakoff * mh/README: Updated. * mh/mhn.c: Recognize mhn-compose-* profile components. 2003-03-20 Sergey Poznyakoff * mh/mhn.c: Implemented #forw directive. * mh/forw.c: Fixed --mime mode. * mh/TODO: Updated 2003-03-19 Sergey Poznyakoff * mh/anno.c: Minor changes for consistency with the overall GNU mh options layout. * mh/comp.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/forw.c: Likewise. * mh/inc.c: Likewise. * mh/install-mh.c: Likewise. * mh/mark.c: Likewise. * mh/mh_getopt.h: Likewise. * mh/mhl.c: Likewise. * mh/mhn.c: Likewise. * mh/mhpath.c: Likewise. * mh/pick.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/send.c: Likewise. * mh/sortm.c: Likewise. * mh/whatnow.c: Likewise. * mh/whom.c: Likewise. 2003-03-19 Sergey Poznyakoff * doc/rfc/Makefile.am: Added rfc1521.txt * doc/rfc/rfc1521.txt: Added to the repository. * mailbox/filter_trans.c (base64_encode): Bugfix. * mh/mhn.c: Implemented basic editing functionality. * mh/mh_init.c (mh_create_message_id): Minor change. * mh/README: Updated * mh/TODO: Updated 2003-03-19 Sergey Poznyakoff * mh/mhn.c: Added framework for compose mode. * mh/mh.h (mh_create_message_id): New function. * mh/mh_init.c: Likewise. * mh/send.c: Use mh_create_message_id(). 2003-03-17 Sergey Poznyakoff * mh/mh.h (MHL_DISABLE_BODY): New flag. * mh/mh_list.c (eval_body,mhl_format_run): MHL_DISABLE_BODY bit inhibits the 'body:' keyword. * mh/mhn.c: Implemented store mode. * mh/README: Updated * mh/TODO: Updated 2003-03-16 Wojciech Polak * mh/mh_init.c (mh_getyn, mh_real_install): Added an extra space after the question marks. * configure.ac: Minor, changed GDBM to GNU DBM. * mailbox/mailcap.c: Updated copyright. * include/mailutils/mailcap.h: Likewise. 2003-03-15 Sergey Poznyakoff * mh/mhn.c: New file. Implementation of mhn utility (partial). * mh/.cvsignore: Added mhn * mh/Makefile.am: Likewise. * mh/forw.c: Implemented --mime. * mh/TODO: Updated. * mh/mh.h (mhl_format_run): Changed prototype (MHL_DECODE,MHL_CLEARSCREEN,MHL_BELL): New defines. * mh/mh_getopt.h: Updated. * mh/mh_list.c (mhl_format_run): Changed declaration. (eval_body): Decode message body on request. * mh/mh_ctx.c: Bugfix. Thanks Wojciech for noticing! * mh/mhl.c: Updated invocations of mhl_format_run(). * mh/repl.c: Likewise. * po/POTFILES.in: Added new files. 2003-03-14 Sergey Poznyakoff * TODO: Reformatted in Emacs outline mode * mh/compcommon.c: New file. * mh/forw.c: New file. * mh/.cvsignore: Added forw * mh/Makefile.am: Likewise. * mh/TODO: Updated * mh/comp.c (format_str,check_draft_disposition): Removed (main): Use mh_comp_draft(). * mh/mh.h (mh_comp_draft,check_draft_disposition): New functions. * mh/mh_stream.c (_body_readline,_body_stream_size): Bugfix. * mh/mh_whom.c (scan_addrs): Bugfix. * po/POTFILES.in: Added new files. 2003-03-13 Sergey Poznyakoff Reorganized directory layout under mailbox/. * configure.ac: Added mailbox/ subdirectories * mailbox/Makefile.am: Likewise. * po/POTFILES.in: Added missing files. * mh/README: Updated * mailbox/mbox/Makefile.am: New file * mailbox/mbox/.cvsignore: New file * mailbox/mbox/folder.c: Moved from ../ * mailbox/mbox/mbox.c: Moved from ../ * mailbox/mbox/url.c: Moved from ../ * mailbox/mbox/mboxscan.c: Moved from ../ * mailbox/mbox/mbox0.h: New file * mailbox/mh/Makefile.am: New file * mailbox/mh/.cvsignore: New file * mailbox/mh/folder.c: Moved from ../ * mailbox/mh/mbox.c: Moved from ../ * mailbox/mh/url.c: Moved from ../ * mailbox/maildir/Makefile.am: New file * mailbox/maildir/.cvsignore: New file * mailbox/maildir/mbox.c: New file * mailbox/imap/Makefile.am: New file * mailbox/imap/.cvsignore: New file * mailbox/imap/folder.c: Moved from ../ * mailbox/imap/mbox.c: Moved from ../ * mailbox/imap/url.c: Moved from ../ * mailbox/pop/Makefile.am: New file * mailbox/pop/.cvsignore: New file * mailbox/pop/folder.c: Moved from ../ * mailbox/pop/mbox.c: Moved from ../ * mailbox/pop/url.c: Moved from ../ * mailbox/folder_mbox.c: Moved to mbox/folder.c * mailbox/mbx_mbox.c: Moved to mbox/mbox.c * mailbox/url_mbox.c: Moved to mbox/url.c * mailbox/mbx_mboxscan.c: Moved to mbox/mboxscan.c * mailbox/folder_mh.c: Moved to mh/folder.c * mailbox/mbx_mh.c: Moved to mh/mh.c * mailbox/url_mh.c: Moved to mh/url.c * mailbox/mbx_maildir.c: Moved to maildir/mbox.c * mailbox/folder_imap.c: Moved to imap/folder.c * mailbox/mbx_imap.c: Moved to imap/mbox.c * mailbox/url_imap.c: Moved to imap/url.c * mailbox/folder_pop.c: Moved to pop/folder.c * mailbox/mbx_pop.c: Moved to pop/mbox.c * mailbox/url_pop.c: Moved to pop/url.c 2003-03-11 Sergey Poznyakoff * auth/sql.c (mu_sql_authenticate): Bugfix. * mh/.cvsignore: Added 'whom'. * mh/mh_whom.c: New file. * mh/whom.c: New file. * mh/Makefile.am: Added new files * mh/TODO: Updated * mh/mh.h (mh_draft_name,mh_whom): New functions. * mh/mh_getopt.h: Updated * mh/mh_init.c (mh_draft_name): New function. * mh/mh_whatnow.c (whom): Use mh_whom. * mh/send.c (draft_name): Removed. * mh/whatnow.c (main): Use 'draft' by default. 2003-03-10 Sergey Poznyakoff * comsat/comsat.c: Use ngettext. * mh/sortm.c: New file. Source for the sortm utility. * mh/.cvsignore: Added sortm * mh/Makefile.am: Likewise * mh/README: Updated * mh/TODO: Updated * mh/mh_getopt.h: Updated 2003-03-03 Sergey Poznyakoff * configure.ac: New option --with-included-argp * README: Documented --with-included-argp * doc/texinfo/muint.texi: New file. Root for the "Mailutils internals" manual. * doc/texinfo/Makefile.am: Added rules to generate muint.info * doc/texinfo/mom.texi: Minor changes. * po/POTFILES.in: Added missed files. 2003-02-24 Alain Magloire * doc/texinfo/mom.texi: Draft explanation of the Mailutils Object Model (MOM). 2003-02-24 Sergey Poznyakoff * include/mailutils/mailcap.h: Added missing prototypes, protected argument decls with __P and the whole stuff with extern "C". * mailbox/mailcap.c: Fixed indentation, adopted for 80-column screen. * doc/texinfo/mailcap.inc: Removed. Auto-generated file * examples/mailcap.c: New file. * examples/Makefile.am: Added mailcap.c * examples/.cvsignore: Added mailcap * mailbox/testsuite/Mailcap: New file. Test data for mailcap. * mailbox/testsuite/Makefile.am: Added Mailcap * mailbox/testsuite/mailbox/mailcap.exp: New file. * mailbox/testsuite/mailbox/DISTFILES: Added mailcap.exp 2003-02-23 Alain Magloire * mailbox/refcount.c: Added a simple thread-safe implementation. * include/mailutils/types.h: Added structure for refcount. * include/mailutils/refcount.h: Added a simple thread-safe implementation. 2003-02-23 Alain Magloire * include/mailutils/types.h: Added the mailcap structure. * include/mailutils/mailcap.h: Include types.h 2003-02-23 Alain Magloire * doc/texinfo/mailcap.texi: Document the mailcap functions. * doc/texinfo/mailcap.inc: Code example. * doc/texinfo/Makefile.am: Added mailcap.texi and mailcap.inc * mailbox/Makefile.am: Added mailcap.c * mailbox/mailcap.c: include <mailutils/mailcap.h> * include/mailutils/Makefile.am: Added mailcap.h 2003-02-22 Alain Magloire First implementation of rfc1524. * mailbox/mailcap.c: First implementation of rfc1524. * include/mailutils/mailcap.h: First implementation of rfc1524. 2003-02-22 Sergey Poznyakoff * include/mailutils/header.h (MU_HEADER_FCC): New macro * mailbox/mailer.c: Handle Fcc headers. * mailbox/sendmail.c: Ignore Fcc. * mailbox/smtp.c: Likewise. * mailbox/mbx_default.c (plus_expand): Bugfix * mailbox/mbx_mh.c (_mh_message_save): Bugfix * mh/folder.c (action_print): Minor change * mh/mh_argp.c (parse_opt): Pass the argument to ARG_FOLDER without the leading '+'. This should be fixed later. * mh/refile.c: Fixed expanding of the draftfile name. * mh/send.c (send): Fix up the folder dir by appending a format specifier (mh:/) to it. * mh/mh_init.c: Moved .*_to_message stuff to mh_stream.c * mh/mh_stream.c: Improved .*_to_message functions. 2003-02-21 Sergey Poznyakoff * mail/testsuite/mail/folder.exp: Reflect changes to mailbox/date.c * mail/testsuite/mail/write.exp: Likewise 2003-02-21 Sergey Poznyakoff * configure.ac: New option --with-mh-bindir sets installation directory for MH binaries * mh/Makefile.am: Install binaries into a separate directory to prevent namespace pollution. * README: Updated * mailbox/date.c (wdays): Two typos! Ouch... * mh/README: Updated. * mh/folder.c: Do not mark current folder when in fast mode * mh/mh_whatnow.c: Execute default programs using full path specification. * mh/mh_stream.c: New file. * mh/mh.h (mhdraft_stream_create): New function. * mh/mh_init.c (mh_stream_to_message): Use MH draft streams. 2003-02-20 Sergey Poznyakoff * mh/README: Updated * mh/TODO: Updated * mh/refile.c: New option --copy. Properly handle trailing folder names. As a side-effect it accepts messages and folders given in any order. Good! * mh/mh_argp.c (parse_opt): Call the handler with ARG_FOLDER key if argument starts with +. * mh/anno.c (opt_handler): Removed superfluous case '+'. * mh/comp.c: Likewise. * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/mark.c: Likewise. * mh/mhl.c: Likewise. * mh/mhpath.c: Likewise. * mh/pick.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. 2003-02-18 Sergey Poznyakoff * configure.ac: Provide a replacement for vsyslog * lib/vsyslog.c: New file. * lib/Makefile.am: Add vsyslog.c * mh/README: Minor changes. * mh/TODO: Minor changes. * mh/mh.h (MHA_REQUIRED,MHA_OPTARG,MHA_OPT_CLEAR): New defines. * mh/mh_fmtgram.y (mh_code_builtin): Minor fix. * mh/mh_format.c (builtin_me): Enclose the address in <> brackets. (builtin_formataddr): Minor fix. (builtin_tab): Fixed optarg column. 2003-02-16 Sergey Poznyakoff The sources up to here are tagged rel_0_3. * libmu_scm/Makefile.am: Use $< only in implicit rules. Non-gnu implementation of make expand it to a null string if used within an explicit rule. * mh/Makefile.am: Likewise. 2003-02-16 Sergey Poznyakoff * configure.ac: Added check for declaration of strerror. Raised version number to 0.3 * NEWS: Updated * guimb/Makefile.am: Added $(top_srcdir)/mailbox to INCLUDES. * guimb/guimb.h: Include <getline.h> * mail/mail.h (util_noapp): Added prototype. * mail/msgset.y: Declaration of check_set(). * mail.remote/mail.remote.c: Include <mailutils/error.h> * mailbox/date.c: Added a clarifying comment. * mailbox/stream.c (stream_seek): Fixed type of size auto variable. * mh/mh_sequence.c: New file. * mh/pick.h: New file. * mh/pick.y: New file. * mh/pick.c: Implemented. * mh/Makefile.am: Added mh_sequence.c and pick.y. Provide for multiple parsers within an application. * mh/.cvsignore: Updated. * mh/README: Updated * mh/TODO: Updated * mh/mh.h (mh_seq_add, mh_seq_delete, mh_seq_read): New functions. * mh/mh_argp.c (parse_opt): Pass argp_state to the handler (my_argp_parse): Changed declaration. The new argument `flags' is accepted. Use my_argp_parse() wrapper instead of argp_parse(). * mh/mh_getopt.h: Updated. * mh/anno.c: Changed invocation of mh_argp_parse and updated the definition of opt_handler. * mh/comp.c: Likewise. * mh/mhl.c: Likewise. * mh/mhpath.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/send.c: Likewise. * mh/whatnow.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/install-mh.c: Likewise. * mh/mark.c: Likewise. Use new mh_sequence functions. * doc/texinfo/fdl.texi: Minor change. * doc/texinfo/programs.texi: Advice on how to use mail.local with SQL authentication. 2003-02-14 Wojciech Polak * po/POTFILES.in: Added auth/tls.c. * doc/texinfo/mailutils.texi: Updated copyright year. 2003-02-14 Sergey Poznyakoff * mail/msgset.y: Bugfix. '*' should not select deleted messages. * mail/next.c: Skip deleted messages. * mail/previous.c: Likewise. * mail/undelete.c (undelete0): Set cursor if it is zero. * mh/pick.c: New file. A framework for pick command * mh/Makefile.am: Added pick.c * mh/.cvsignore: Likewise. * mh/mh_getopt.h: Updated. * mh/mh_init.c (mh_real_install): Create inbox. * mh/refile.c: Fixed copyright year. * mh/send.c: Get personal data from the value of the profile component "signature" or from the environment variable SIGNATURE. 2003-02-14 Sergey Poznyakoff * configure.ac: New option --enable-mh-utils. Added check for Emacs lisp directory * include/mailutils/address.h (address_get_nth): New function. Get Nth subaddress from an address. * mailbox/address.c: Likewise. * mh/mailutils-mh.eli: New file. Source for mailutils-mh.el -- an elisp module that configures mh-e.el for use with mailutils. * mh/Makefile.am: Added rules for generating mailutils-mh.el * mh/mh_format.c (builtin_formataddr): Rewritten to prevent formatting the duplicate addresses. (builtin_putaddr): Use print_hdr_string to format output string. * po/POTFILES.in: Added more files. * README: Updated * mh/README: Updated 2003-02-13 Sergey Poznyakoff * imap4d/append.c (imap4d_append): Bugfix. * include/mailutils/stream.h (stream_seek): New function. * mailbox/stream.c: Likewise. * mailbox/mbx_mh.c (_mh_message_save): Check if the envelope date has a newline. * mailbox/message.c (message_size): Bugfix. Retrieve the header and the body with appropriate calls instead of addressing corresponding members of the message_t structure. * mh/mh_list.c: New file. The parser and run-time driver for mhl format files. * mh/mhl.format: New file. The default format for mhl. * mh/Makefile.am: Added mh_list.c and mhl.format. * mh/folder.c: Use ARG_ macros instead of single-char option letters. * mh/mh_getopt.h: Added new ARG_ macros. * mh/mh.h (mh_file_to_message,mh_stream_to_message): New functions. (mhl_format_compile,mhl_format_run,mhl_format_destroy): New functions. * mh/mh_init.c (mh_file_to_message,mh_stream_to_message): New functions. * mh/mh_fmtgram.y (mh_format_parse): Bugfix. Initialize prog to zero. * mh/mh_format.c (mh_format_str): New function. * mh/mhl.c: Finished. * mh/repl.c: Handle --filter argument. * mh/send.c: Use mh_.*_to_message. * mh/README: Updated. * mh/TODO: Updated. * NEWS: Updated. 2003-02-12 Sergey Poznyakoff * mailbox/file_stream.c (prog_stream_create): New function. Creates a stream connected to the stdin or stdout of a given program. * include/mailutils/stream.h (prog_stream_create): New function. * mh/mhl.c: New file. A framework for mhl program. * mh/Makefile.am: Added mhl * mh/.cvsignore: Likewise. * mh/TODO: Updated. * mh/mh_getopt.h: Added new ARG_ macros. * NEWS: Added entry for version 0.3 * README: Updated. 2003-02-12 Sergey Poznyakoff * mh/mh_format.c (builtin_formataddr): Do not include own email unless RCPT_ME is set. * mh/mh_init.c (mh_is_my_name): Honor Alternate-Mailboxes variable, use wildcard matching. 2003-02-10 Wojciech Polak * */*: Fixed and/or updated copyrights. * README: Updated. * auth/tls.c: Changed `--ssl-key' arg to FILE type. 2003-02-10 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/rfc2047.c: avoid cutting utf-8 strings in the middle of a multibyte character. 2003-02-10 Sergey Poznyakoff * mailbox/mbx_mh.c (mh_expunge, mh_save_attributes): Bugfix * mh/mh.h (mh_annotate): New function. * mh/mh_init.c: Likewise. * mh/anno.c: Use mh_annotate 2003-02-10 Sergey Poznyakoff * include/mailutils/header.h (MU_HEADER_ENV_SENDER, MU_HEADER_ENV_DATE): New macros. * mailbox/mbx_mh.c (_mh_message_save): Bugfix. (mh_save_attributes): Implemented * mh/install-mh.c: New file. * mh/anno.c: New file. * mh/mark.c: New file * mh/Makefile.am: Added install-mh, anno and mark * mh/.cvsignore: Likewise. * mh/mh_global.c (mh_auto_install): New global. (mh_read_profile): Call mh_install() if necessary. (mh_global_sequences_iterate) (mh_global_context_iterate): New functions. * mh/mh_init.c (mh_install_help, mh_real_install) (mh_install): New functions. (mh_open_msg_file): Rewritten. * mh/mh_whatnow.c: Implemented push command. * mh/TODO: Updated * mh/mh.h (mh_context_iterator): New type. (mh_open_msg_file): Changed declaration. (mh_install, mh_global_context_iterate) (mh_global_sequences_iterate,mh_context_iterate) (mh_usedraft): New functions. * mh/mh_ctx.c (mh_context_iterate): New function. * mh/mh_getopt.h: Added ARG_ macros. * mh/comp.c: Fixed option handling. * mh/fmtcheck.c: Likewise. * mh/inc.c: Likewise. * mh/mhpath.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/whatnow.c: Likewise. * mh/send.c: Add from: header to the outgoing message. * po/POTFILES.in: Added new files. 2003-02-08 Sergey Poznyakoff * mh/mh.h: Added new includes. (mh_open_msg_file,mh_usedraft): New functions. * mh/mh_init.c (mh_open_msg_file): New function. Based on refile.c:open_source(). * mh/mh_whatnow.c (mh_usedraft): New function. * mh/refile.c (open_source): Removed in favor of mh_open_msg_file(). * mh/send.c: Implemented basic functionality. 2003-02-08 Sergey Poznyakoff * examples/decode2047.c (main): Added return statement. * mailbox/mbx_mh.c (_mh_message_save): Allow for mh-specific delimiter (a string of dashes) between the headers and the body. * mailbox/mutil.c (mu_spawnvp): Bugfix, PROG was not used. * mh/send.c: New file. A framework for send utility. * mh/.cvsignore: Added send. * mh/Makefile.am: Likewise. * mh/mh_whatnow.c: Implemented refile command. * mh/mh_getopt.h (struct mh_option): Removed `longopt' member. * mh/comp.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/mh_getopt.c: Likewise. * mh/scan.c: Likewise. * mh/whatnow.c: Likewise. * mh/rmf.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/TODO: Updated 2003-02-07 Wojciech Polak * doc/texinfo/programs.texi: Added info about WITH_GNUTLS and WITH_GSASL to the `General Information' node. 2003-02-07 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/rfc2047.c: implemented a preliminary RFC2047 encoder. 2003-02-06 Sergey Poznyakoff * libsieve/actions.c (build_mime): Call message_unref. * mailbox/body.c (lazy_create): Removed. Use mu_tempname() instead. 2003-02-03 Sergey Poznyakoff * auth/Makefile.am: Removed leftover AUTH_AUTHOBJS from LIBADD * auth/gsasl.c (buffer_grow, _gsasl_strerror): Fixed declarations. * auth/tls.c (_tls_strerror): Fixed declaration. * guimb/guimb.h: Added missing includes * guimb/main.c: Removed include <mailutils/argp.h> * imap4d/auth_gsasl.c (create_gsasl_stream,gsasl_replace_streams): Fixed declarations. (auth_step_base64): New function. A wrapper around gsasl_server_step_base64 to cope with GSASL_TOO_SMALL_BUFFER error code. (auth_gsasl): Use auth_step_base64(). Output any surplus data returned with GSASL_OK code (proposed by Simon Josefsson <jas@extundo.com>) * imap4d/bye.c (imap4d_bye0): Added missing argument to syslog. * pop3d/extra.c (pop3d_abquit): Likewise. * imap4d/util.c (util_set_input, util_set_output): Bugfix * include/mailutils/stream.h (stream_set_strerror) (stream_strerror): Changed prototype * mailbox/stream.c: Likewise. * mailbox/include/stream0.h (struct _stream): Changed declaration of _strerror method. * mailbox/file_stream.c (_file_strerror): Changed prototype * mailbox/list.c (list_set_comparator): Bugfix. * mailbox/mailutils-config.c: include <mu_asprintf.h> * mailbox/monitor.c [!WITH_PTHREAD] (STATIC_UNLOCK): expand to empty string to avoid spurious warnings. * mailbox/mutil.c: Added missing includes * mailbox/rfc2047.c: Likewise. * libmu_scm/mu_body.c: Added missing typecasts. * libmu_scm/mu_mailbox.c: Likewise. * libmu_scm/mu_message.c: Likewise. * libmu_scm/mu_mime.c: Likewise. * libmu_scm/mu_scm.c: Likewise. * mail.local/script.c (prog_mda): Removed unused variables. * mailbox/Makefile.am (mailutils_config_CFLAGS): Added -I${top_srcdir}/lib. * mh/mh_format.c (print_hdr_segment): Count a tab for eight spaces. (builtin_concat): Compress whitespace before further processing. * mh/mh_getopt.c: Added missing includes. * mh/comp.c (opt_handler): Removed unused variable 2003-01-31 Sergey Poznyakoff * mailbox/file_stream.c (_file_readline): Make sure the terminal zero is always added. * mh/mh.h (mh_format): Changed declaration. (mh_format_debug): New function. * mh/mh_format.c (mh_format): Use dynamically allocated buffer. (builtin_printstr): Removed. (builtin_printhdr): New function. (builtin_putnum,builtin_putnumf) (builtin_putstr,builtin_putstrf): Bugfix. * mh/mh_fmtgram.y (mh_format_debug): New function. * mh/inc.c: Updated calls to mh_format * mh/scan.c: Likewise. * mh/repl.c: Updated calls to mh_format. (format_str): Use printhdr. (make_draft): Disable interactive prompting when build_only flag is set. * mh/replcomps: Use printhdr. * mh/mh_init.c (mh_read_formfile): Bugfix. * mh/fmtcheck.c: New command line option --debug. * mh/README: Changed printstr to printhdr * pop3d/extra.c (pop3d_readline): Fixed misguiding diagnostics. Check for eof. * pop3d/signal.c (pop3d_sigchld): Don't try to print to stdout if SIGPIPE received. 2003-01-30 Sergey Poznyakoff * mailbox/rfc2047.c (rfc2047_decode): Bugfix. * imap4d/idle.c: Fixed wording of OK message. 2003-01-29 Sergey Poznyakoff * imap4d/idle.c: Do not wait for 'DONE' command longer than timeout seconds. * mailbox/rfc2047.c: New file. Initial implementation of rfc2047_decode. Based on input from Kidong Lee <brian@ahmlhs.com>. * mailbox/Makefile.am: Added rfc2047.c * examples/decode2047.c: New file. Test program for rfc2047 decoder functions. * examples/Makefile.am: Added decode2047.c * include/mailutils/errno.h (MU_ERR_BAD_2047_INPUT): New error code. * mailbox/muerrno.c: Likewise. * include/mailutils/mime.h (rfc2047_decode): New function. * mailbox/testsuite/RFC2047: New file. Test data for rfc 2047. * mailbox/testsuite/Makefile.am: Added RFC2047 * mailbox/testsuite/mailbox/rfc2047.exp: New file. Testcase for decoding rfc 2047 strings. * mailbox/testsuite/mailbox/DISTFILES: Added rfc2047.exp 2003-01-28 Sergey Poznyakoff * auth/gsasl.c (_gsasl_get_fd): New function. (gsasl_stream_create): Install _get_fd method * auth/tls.c (_tls_get_fd): New function. (tls_stream_create): Install _get_fd method * imap4d/idle.c: New file. Implements IDLE command (rfc 2177) * imap4d/Makefile.am: Added imap4d/idle.c * imap4d/capability.c (imap4d_capability_init): Announce IDLE capability. * imap4d/commands.c: Added entry for IDLE command. * imap4d/imap4d.h (imap4d_idle, util_wait_input): New functions. * imap4d/util.c (util_wait_input): New function. * imap4d/noop.c: Removed misleading comment. * imap4d/testsuite/imap4d/anystate.exp: Reflect IDLE capability. 2003-01-28 Sergey Poznyakoff * comsat/comsat.c: Removed unneded colon in the argument to perror. * imap4d/imap4d.c: Likewise. * guimb/main.c: Fixed help output. * mailbox/mailutils-config.c: Likewise. 2003-01-26 Sergey Poznyakoff * imap4d/auth_gss.c: Removed newline from the syslog diagnostic message. * imap4d/bye.c: Cleaned wording in diagnostics. * imap4d/search.c: Likewise. * libsieve/require.c: Likewise. * mailbox/mu_argp.c: Likewise. * mh/mh_fmtgram.y: Likewise. * mh/mh_format.c: Likewise. * pop3d/extra.c: Likewise. * sieve/sieve.c: Likewise. * mail/summary.c: Use ngettext * mh/folder.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * pop3d/user.c: Likewise. * mail.remote/mail.remote.c: Use mu_error instead of fprintf * readmsg/readmsg.c: Likewise. * mh/comp.c: Fixed use of OPTION_DOC options. * mh/fmtcheck.c: Likewise. * mh/inc.c: Likewise. * mh/mhpath.c: Likewise. * mh/rmf.c: Likewise. 2003-01-23 Wojciech Polak * mailbox/mu_argp.c: Added WITH_GNUTLS and WITH_GSASL to `mu_conf_option'. 2003-01-23 Wojciech Polak * doc/texinfo/programs.texi: Added the 'encryption' node. 2003-01-23 Sergey Poznyakoff * libsieve/util.c (_comp_action): Bugfix. Incorrectly handled multiple patterns. * sieve/testsuite/scripts/mul-addr.sv: New file. Script for testing "multiple patterns" bug. * sieve/testsuite/sieve/mul-addr.exp: New file. Testcase for "multiple patterns" bug. * sieve/testsuite/scripts/DISTFILES: Updated * sieve/testsuite/sieve/DISTFILES: Updated * imap4d/auth_gsasl.c: Removed leftover "while" 2003-01-22 Sergey Poznyakoff Renamed mu_errstring to mu_strerror for consistency with usual practice. Files affected: * comsat/comsat.c * dotlock/dotlock.c * examples/http.c * examples/mimetest.c * examples/msg-send.c * examples/mta.c * examples/sfrom.c * examples/url-parse.c * frm/frm.c * from/from.c * guimb/collect.c * imap4d/auth_gsasl.c * imap4d/select.c * include/mailutils/errno.h * libsieve/actions.c * libsieve/argp.c * libsieve/prog.c * libsieve/require.c * libsieve/runtime.c * libsieve/sieve.l * mail/alt.c * mail/file.c * mail/mail.c * mail/send.c * mail/util.c * mail/var.c * mail.local/main.c * mail.remote/mail.remote.c * mailbox/mbx_mbox.c * mailbox/mbx_pop.c * mailbox/message.c * mailbox/mu_argp.c * mailbox/muerrno.c * mailbox/wicket.c * mh/comp.c * mh/inc.c * mh/mh_ctx.c * mh/mh_init.c * mh/mh_msgset.c * mh/mh_whatnow.c * mh/refile.c * mh/repl.c * pop3d/apop.c * pop3d/lock.c * readmsg/readmsg.c * sieve/sieve.c 2003-01-22 Sergey Poznyakoff * configure.ac: Raised version number to 0.2.2 Added support for cram-md5 password file * auth/Makefile.am: Define SITE_CRAM_MD5_PWD * auth/gsasl.c: Implemented gsasl stream. Added argp stuff. * imap4d/auth_gsasl.c (auth_gsasl): Make sure the streams are reset after issuing OK tagged response. * imap4d/imap4d.c (imap4d_capa): Require "gsasl" capability if compiled with gsasl support. (main): Call auth_.*_init's after mu_argp_parse. * imap4d/imap4d.h (util_get_input, util_get_output) (util_set_input, util_set_output): New functions. (util_register_event, util_event_remove, util_run_events): New functions. * imap4d/util.c (util_finish): Check event queue if the state has changed. (util_register_event, util_event_remove, util_run_events): New functions. * include/mailutils/gsasl.h (gsasl_stream_create): Changed declaration. (mu_gsasl_init_argp): New function. (gsasl_cram_md5_pwd): New global. * mailbox/stream.c (stream_sequential_readline, stream_strerror): Check for stream == NULL. * imap4d/store.c (imap4d_store0): Fixed STORE untagged output in accordance with rfc2060-errata document. * imap4d/fetch.c (fetch_flags0): Likewise. * imap4d/testsuite/imap4d/expunge.exp: Likewise. * imap4d/testsuite/imap4d/fetch.exp: Likewise. * imap4d/testsuite/imap4d/search.exp: Likewise. * doc/rfc/rfc2177.txt: New file. * doc/rfc/Makefile.am: Added rfc2177.txt 2003-01-22 Sergey Poznyakoff * configure.ac: Renamed AUTHOBJS to IMAP_AUTHOBJS for clarity. Added call to MU_CHECK_GSASL. * m4/gsasl.m4: New file. Detect the presense of libgsasl library. * m4/Makefile.am: Added gsasl.m4 * auth/gsasl.c: New file. Placeholder for gsasl stream support. * auth/Makefile.am: Added gsasl.c. * auth/tls.c: Include stdlib.h (mu_deinit_tls_libs): Changed return type to void * imap4d/Makefile.am: Renamed AUTHOBJS to IMAP_AUTHOBJS. * imap4d/authenticate.c: Rewritten capability and authentication systems. * imap4d/capability.c: Use comparator function for list deletions. * imap4d/imap4d.c (tls_available,tls_done): Removed. (main): Call auth_gssapi_init, auth_gsasl_init * imap4d/imap4d.h (tls_available,tls_done): Removed. (starttls_init,util_atexit): New functions. (imap4d_auth_handler_fp): New data type. (auth_gssapi_init,auth_gsasl_init): New functions/macros * imap4d/starttls.c (tls_available,tls_done): Static variables. (imap4d_starttls): Register mu_deinit_tls_libs as an 'atexit' function. (starttls_init): New function. * imap4d/util.c (util_setio): Make sure both streams are line-buffered. (util_get_input,util_get_output) (util_set_input,util_set_output): New functions for manipulating io streams. (util_atexit): New function. * imap4d/auth_gss.c (auth_gssapi): Changed declaration and return values to match new authentication framework. (auth_gssapi_init): New function * imap4d/auth_gsasl.c: New file. * include/mailutils/list.h (list_comparator_t): New datatype. (list_set_comparator): New function * include/mailutils/tls.h (mu_deinit_tls_libs): Changed type to void. * include/mailutils/gsasl.h: New file. * include/mailutils/Makefile.am: Added gsasl.h. * mailbox/include/list0.h (struct _list): New member comp. * mailbox/list.c (list_set_comparator): New function. (list_remove, list_replace): Use list->comp for comparing list items with the supplied data. * pop3d/extra.c (pop3d_setio): Make sure both streams are line-buffered. * mailbox/.cvsignore: Updated 2003-01-21 Sergey Poznyakoff Implemented LOGINDISABLED. * imap4d/capability.c (imap4d_capability_add) (imap4d_capability_remove, imap4d_capability_init): New functions. * imap4d/imap4d.h: Likewise. * imap4d/imap4d.c (login_disabled): New global. (argp_option options): Added --login-disabled option. (imap4d_parse_opt): Handle --login-disabled option. (main): Call imap4d_capability_init(). Register "STARTTLS" capability if tls is OK. * imap4d/starttls.c: When TLS negotiation succeedes, remove "STARTTLS" capability and reset login_disabled. * imap4d/login.c: Fail if login_disabled is set. * imap4d/util.c (util_msgset): Edited comment. (util_start,util_getstate): Removed. 2003-01-20 Sergey Poznyakoff * configure.ac: Invoke AM_GNU_GETTEXT with no-libtool, need-ngettext * lib/Makefile.am (INCLUDES): Added @INTLINCS@ * lib/posix/regex.h: Define __restrict_arr to empty string unless it was already defined elsewhere. * m4/tls.m4: Reverted order of checks for libgnutls and libgcrypt. * mailbox/Makefile.am (mailutils_config_CFLAGS): Define I18NLIBS. * mailbox/mailutils-config.c (main): Use I18NLIBS instead of hardcoding library names. * THANKS: Added Simon Josefsson 2003-01-19 Wojciech Polak * auth/tls.c (mu_check_tls_environment): Removed file permissions check for `ssl_cert'. Thanks Simon Josefsson for reporting. 2003-01-18 Sergey Poznyakoff * imap4d/util.c (util_token): Fixed comment. * mailbox/mbx_mh.c (mh_check_message): New function. (mh_body_size,mh_check_message,mh_header_size) (mh_header_lines): Use mh_check_message() to make sure the message has been scanned. * mh/comp.c: New file. Implements comp utility. * mh/Makefile.am: Added comp. * mh/mh.h (mh_err_memory,mh_file_copy): New functions. * mh/mh_init.c: Likewise. * mh/mh_argp.c: Use mh_err_memory to report low memory diagnostics. * mh/mh_ctx.c: Likewise. * mh/mh_msgset.c: Likewise. * mh/mh_whatnow.c: Likewise. * mh/repl.c: Changed semantics of --use option. It takes an optional argument of yes/no. (make_draft): Changed declaration. * mh/TODO: Updated. * mh/README: Updated. 2003-01-18 Wojciech Polak * imap4d/util.c (util_bye): Check 'tls_available' before calling mu_deinit_tls_libs(). Just for make sure... * pop3d/extra.c (pop3d_bye): Likewise. 2003-01-18 Sergey Poznyakoff * include/mailutils/stream.h (stream_set_strerror) (stream_sequential_read,stream_sequential_readline) (stream_sequential_write,stream_strerror): New functions. * include/mailutils/tls.h: Removed inclusion of gnutls.h (tls_stream_create): New declaration. (mu_check_tls_environment, mu_init_tls_libs) (mu_deinit_tls_libs): Added prototypes. * mailbox/file_stream.c (_file_strerror): New function. (file_stream_create): Register strerror function. (stdio_stream_create): Enable caching only if the file is not seekable and MU_STREAM_SEEKABLE bit is set in flags. Register different sets of (read,readline,write) handlers depending on the setting of MU_STREAM_SEEKABLE bit. * mailbox/include/stream0.h (struct _stream): Removed unused member `roff'. Added new member `offset' for support of sequential access functions. (_strerror): New method. Return stream-specific error description (if any). * mailbox/stream.c (stream_set_strerror): New function. (stream_sequential_read,stream_sequential_readline) (stream_sequential_write): New functions for sequential access to stream. (stream_strerror): New function. Return stream-specific error description (if any). * auth/tls.c: Implemented TLS streams. All tls-specific details are now hidden within this module. * examples/base64.c: Use sequential access for the output stream * examples/msg-send.c: Open stdio stream with MU_STREAM_SEEKABLE bit set. * mail.remote/mail.remote.c: Likewise. * imap4d/bye.c (imap4d_bye0): Use util_is_master() and util_bye() * imap4d/imap4d.c (imap4d_mainloop): Changed proto following that of pop3. * imap4d/imap4d.h (util_setio): Changed declaration. (util_is_ofile): Removed. (util_is_master): New. (imap4d_deinit_tls_server): Removed. * imap4d/signal.c (imap4d_signal): Use util_is_master(). * imap4d/starttls.c (imap4d_starttls): Flush output before initializing tls. * imap4d/util.c (ifile, ofile, sfile): Removed. (istream, ostream): New statics. (util_send_lowlevel): Removed (util_send, util_out, util_finish, imap4d_readline) (util_flush_output): Rewritten using streams. (util_setio): Changed argument types (util_is_ofile): Removed. (util_is_master): New function. (imap4d_init_tls_server): Rewritten using TLS streams. (imap4d_deinit_tls_server): Removed. (util_bye): New function. * pop3d/extra.c (ifile, ofile): Removed. (istream, ostream): New streams. (pop3d_setio,pop3d_init_tls_server): Rewritten using streams. (pop3d_flush_output,pop3d_is_master): Likewise. (pop3d_outf,pop3d_readline): Likewise. (pop3d_deinit_tls_server): Removed. (pop3d_bye): New function. * pop3d/pop3d.c (pop3d_mainloop): use pop3d_bye(). * mh/mh_format.c (builtin_references): Fixed typo. (builtin_package, builtin_package_string) (builtin_version): New functions. * mh/replcomps: Emit X-Mailer header. * mh/repl.c (format_str): Likewise. * mh/README: Updated 2003-01-17 Wojciech Polak * imap4d/capability.c: Small fix. 2003-01-17 Wojciech Polak * imap4d/imap4d.c: Added TLS support. (ifile, ofile): Removed globals. (tls_available, tls_done): Added globals. * imap4d/imap4d.h: Include <mailutils/tls.h> (ifile, ofile): Removed declarations. (tls_available, tls_done): Added declarations. (imap4d_starttls): Added prototype. (imap4d_init_tls_server): Likewise. (imap4d_deinit_tls_server): Likewise. (util_setio): Likewise. (util_flush_output): Likewise. (util_is_ofile): Likewise. (imap4d_readline_ex): Changed prototype. Use void instead of FILE *. (imap4d_readline): Likewise. (ERR_TLS): New define. * imap4d/starttls.c: New file. The STARTTLS command support. * imap4d/util.c: Added TLS support (via GnuTLS). (ifile, ofile, sfile): Added as a static variables. (util_send_lowlevel): New function. (imap4d_init_tls_server): Likewise. (imap4d_deinit_tls_server): Likewise. (util_setio): Likewise. (util_flush_output): Likewise. (util_is_ofile): Likewise. * imap4d/bye.c: Added TLS support. * imap4d/commands.c: Likewise. * imap4d/capability.c: Likewise. * imap4d/signal.c: Use util_is_ofile(). * imap4d/Makefile.am: Updated. 2003-01-17 Sergey Poznyakoff * imap4d/sync.c: Always return EXIST and RECENT untagged responses. Thanks Simon Josefsson <jas@extundo.com> for reporting. * libmu_scm/Makefile.am (install-data-hook): Bugfix. 2003-01-17 Sergey Poznyakoff * pop3d/extra.c (pop3d_readline): Bugfix: add terminating zero, and check return value from gnutls_record_recv. * pop3d/pop3d.h (ERR_TLS_IO): New def. 2003-01-16 Sergey Poznyakoff * mh/mh_getopt.c (mh_getopt): Bugfix * mh/mh.h (struct mh_whatnow_env): Added `draftfile' member. * mh/mh_whatnow.c: Reorganized. Implemented disposition shell. * mh/repl.c: Handle draft file. Added --use option. * mh/README: Updated. 2003-01-16 Sergey Poznyakoff * include/mailutils/mutil.h (mu_rfc2822_references) (mu_rfc2822_in_reply_to): New functions. * mail/reply.c (concat,strip_message_id) (get_msgid_header): Removed (make_in_reply_to,make_references): Rewritten using new rfc2822 functions. * mailbox/mutil.c (mu_rfc2822_references) (mu_rfc2822_in_reply_to): New functions. * mh/replcomps: New file. Default format for repl utility. * mh/Makefile.am: Added mhlibdir * mh/mh_getopt.h (struct mh_option): Replaced `int key' with `char *longopt'. (mh_argv_preproc): New function. (mh_optind,mh_optarg): Globals removed. * mh/mh_argp.c (struct mh_argp_data): Moved to mh_getopt.h (parse_opt,mh_argp_parse): Rewritten. Argument parsing goes in two stages: first any old-style mh arguments are expanded to corresponding GNU long options, then argp_parse is run over the constructed argv array. * mh/mh_getopt.c (mh_getopt): Rewritten. The main purpose is to expand old-style options to their double-dash equivalents. (mh_argv_preproc): New function. Preprocess the argv array. * mh/mh_fmtgram.y (want_arg): New lexical tie-in to correctly process trailing whitespace in calls like %(putaddr To: ). * mh/mh_format.c (builtin_in_reply_to, builtin_references): New functions. Interfaces to rfc2822 functions. * mh/mh.h (RCPT_DEFAULT): Default value for rcpt_mask * mh/mh_global.c: Initialize rcpt_mask with RCPT_DEFAULT. * mh/mh_init.c (mh_expand_name): Correctly handle full and relative pathname specifications. * mh/fmtcheck.c: Use new struct mh_option * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/scan.c: Likewise. * mh/whatnow.c: Likewise. * mh/README: Updated. * mh/TODO: Updated. 2003-01-15 Wojciech Polak * auth/tls.c: Fixed typo. * pop3d/pop3d.h (pop3d_init_tls_server): Added prototype. (pop3d_deinit_tls_server): Likewise. * pop3d/pop3d.c: Fixed TLS cleanup. 2003-01-15 Sergey Poznyakoff * m4/db2.m4: Fixed version reference in the comment. * mail/msgset.y: Added missing NLS markers. * mailbox/mutil.c: Fixed indentation. * mh/mh_whatnow.c: New file. * mh/whatnow.c: New file. Source for whatnow utility. * mh/Makefile.am: Removed unnecessary _SOURCE declarations. Added new files and targets. * mh/mh.h: Include argcv.h and getline.h (struct mh_whatnow_env): New datatype. (mh_spawnp, mh_whatnow): New functions. * mh/mh_argp.c (mh_argp_parse): Fixed parsing order: global profile arguments first, then the command line arguments. * mh/mh_format.c: Added missing NLS markers. (builtin_concat,builtin_printstr): New functions. * mh/mh_init.c (mh_spawnp): New function. * mh/repl.c: Almost finished. * mh/mh_ctx.c: Shut compiler warnings. * mh/TODO: Updated. * mh/README: Updated. * mh/.cvsignore: Updated. * po/POTFILES.in: Added missing files. 2003-01-14 Wojciech Polak * auth/tls.c (mu_init_tls_libs): gnutls_global_init() returns zero on success, so reverse this state for 'tls_available' variable. 2003-01-14 Sergey Poznyakoff * m4/db2.m4: New file. Version-specific stuff for Berkeley DB. * m4/tls.m4: Added copyleft header. * m4/Makefile.am: Added db2.m4 * configure.ac: Check for newer version of Berkeley DB * lib/mu_dbm.c [WITH_BDB2] (mu_dbm_firstkey): db->cursor takes three or four arguments, depending on the release of DB 2. Take care of it. * auth/tls.c (mu_init_tls_server): Check return value from gnutls_certificate_set_x509_key_file(). Use gnutls_strerror(), instead of gnutls_perror(), as the latter confuses mail clients. (mu_init_tls_libs): Removed useless initialization of the auto variable. * mail/mail.h (msgset_parse,util_get_message): In order to get rid of superfluous 'Inappropriate message' diagnostics and provide a behaviour consistent with that of standard implementations, moved the flags argument from util_get_message to msgset_parse. (msgset_count): New function. (util_isdeleted): Reverted to older declaration (before 2002-10-13). * mail/msgset.y (msgset_parse): Take a new argument: flags (meaning the same as in the util_get_message call). (msgset_count): New function. * mail/util.c (util_foreach_msg,util_range_msg): Updated calls to msgset_parse. (util_isdeleted): Reverted to older declaration. * mail/copy.c: Updated calls to msgset_parse. * mail/decode.c: Likewise. * mail/delete.c: Likewise. * mail/eq.c: Likewise. * mail/followup.c: Likewise. * mail/from.c: Likewise. * mail/headers.c: Likewise. * mail/next.c: Likewise. * mail/pipe.c: Likewise. * mail/previous.c: Likewise. * mail/quit.c: Likewise. * mail/tag.c: Likewise. * mail/write.c: Likewise. 2003-01-14 Wojciech Polak * pop3d/pop3d.h (ERR_TLS_ACTIVE, TLS_ACTIVE): New defines. * pop3d/pop3d.c: Added support for ERR_TLS_ACTIVE. * pop3d/stls.c: Likewise. * doc/rfc/Makefile.am: Added rfc2595.txt * TODO: Updated. 2003-01-13 Wojciech Polak * auth/tls.c: New file. Added main TLS/SSL code (via GnuTLS). * include/mailutils/tls.h: New file. TLS header file. * auth/Makefile.am: Updated. * include/mailutils/Makefile.am: Likewise. * pop3d/pop3d.c: Added TLS support. * pop3d/pop3d.h: include <mailutils/tls.h> (pop3d_stls): New prototype. * pop3d/stls.c: New file. The STLS command support. * pop3d/extra.c (pop3d_init_tls_server): New function. (pop3d_deinit_tls_server): New function. (pop3d_outf): Added TLS support (GnuTLS). (pop3d_readline): Added TLS support (GnuTLS). * pop3d/capa.c (pop3d_capa): Added STLS. * pop3d/Makefile.am: Updated. * m4/tls.m4: New file. Implements MU_CHECK_TLS defun. * m4/Makefile.am: Updated. * configure.ac: Added GnuTLS support (--with-gnutls). 2003-01-13 Sergey Poznyakoff * m4/gssapi.m4: Fixed typo. * mh/mh.h (RCPT_NONE,RCPT_TO,RCPT_ME,RCPT_ALL): New defines. (rcpt_mask): New global declaration. (mh_get_message): Added missing __P(). (mh_decode_rcpt_flag): New function. * mh/mh_format.c (mh_decode_rcpt_flag,builtin_rcpt): New functions. * mh/mh_global.c (rcpt_mask): New global. Keeps cumulative value of all --cc/--nocc command line options. * mh/repl.c: Changed default format to use (rcpt) to decide whether or not to include an address to the cc: header. Implemented --cc/--nocc. * mh/README: New file. A list of differences from standard MH implementation. 2003-01-12 Wojciech Polak * auth/sql.c: Added missing NLS markers. 2003-01-12 Jordi Mallach <jordi@gnu.org> * mail/mail.c: Update year in copyright notice. 2003-01-12 Sergey Poznyakoff * imap4d/fetch.c: Properly quote return strings. In envelope responses emit a single NIL to represent a non-existent envelope structures. Thanks Nic Ferrier <nferrier@tapsellferrier.co.uk> for reporting the bug. * imap4d/testsuite/imap4d/fetch.exp: Test new fetch responces. * imap4d/testsuite/imap4d/create.exp: Likewise. 2003-01-11 Sergey Poznyakoff * mailbox/mbx_mh.c (mh_scan0): Do not actually read contents of the message files, only register them in the message pool. Moved notification into a separate loop. This way observable action receives notifications in the proper order. * mh/mh_format.c (builtin_unre): New function. Implements extension format function 'unre': remove leading whitespace and eventual 're:' prefix from the subject header line. * mh/mh.h (mh_expand_name): Changed declaration. * mh/mh_init.c: Likewise. * mh/mh_global.c: Changed calls to mh_expand_name. * mh/refile.c: Likewise. * mh/rmf.c: Likewise. * mh/scan.c: When called without arguments do the work by installing observable action. This speeds up execution by the factor of three. * mh/repl.c: Added --build option. Implemented --[no]draftfolder --[no]query. 2003-01-10 Sergey Poznyakoff * libmu_scm/Makefile.am (mailutils.scm target): Bugfix. Use $< instead of $?. * libmu_scm/mailutils.scm.in: Explicitly load libmailbox before loading libmu_scm. Fixed 1.6 branch of the conditional. 2003-01-10 Sergey Poznyakoff * lib/posix/regex.h: Removed redefinition of __restrict_arr * libsieve/comparator.c (comp_false): Fixed declaration. (sieve_match_part_checker): shut compiler warnings about possibly uninitialized variables. * libsieve/sieve.h: include <string.h> * libsieve/tests.c (sieve_test_address,sieve_test_header): Removed unused variables. * examples/.cvsignore: Added base64 2003-01-06 Sergey Poznyakoff * doc/texinfo/libsieve.texi: Reflect recent changes to libsieve. * pop3d/extra.c (pop3d_setio, pop3d_flush_output) (pop3d_is_master): New functions. (pop3d_readline): Fixed prototype: second arg should be size_t. * pop3d/pop3d.c (ifile,ofile): Removed globals. (pop3d_mainloop): Changed declaration. * pop3d/pop3d.h (ifile,ofile): Removed declarations. (getpwnam_ip_virtual,getpwnam_host_virtual): Removed prototypes. (pop3d_setio, pop3d_flush_output, pop3d_is_master): New functions. (pop3d_readline): Fixed prototype. * pop3d/signal.c (pop3d_signal): Use pop3d_is_master(). * pop3d/user.c (pop3d_user): Use pop3d_flush_output(). 2003-01-06 Sergey Poznyakoff * libsieve/tests.c (do_count): New function. A common handler for :count tag. (retrieve_header): Use header_get_field_{name|value}, since header_aget_value cannot return multiple header values. (sieve_test_address,sieve_test_header,sieve_test_envelope): Use do_count. * sieve/testsuite/sieve/relational.exp: Enabled rel-header.sv testcase. * libsieve/require.c: Handle "relational" as a special case. * libsieve/sieve.h: Updated. * libsieve/sieve.l (multiline_strip_tabs): Forward declaration. * libsieve/util.c (sieve_tag_lookup): Check for taglist != NULL before calling list_do(). 2003-01-05 Sergey Poznyakoff * doc/rfc/rfc3431.txt: New file. * doc/rfc/Makefile.am: Add rfc3431.txt * testsuite/spool/relational.mbox: Mailbox for testing relational operations in sieve. * testsuite/spool/DISTFILES (relational.mbox): Added. * include/mailutils/libsieve.h (sieve_relcmp_t,sieve_relcmpn_t): New types. (sieve_register_comparator): Changed prototype. (sieve_require_relational,sieve_str_to_relcmp) (sieve_get_relcmp): New functions. * libsieve/relational.c: New file. * libsieve/Makefile.am: Added relational.c. * libsieve/comparator.c (sieve_register_comparator) (_find_comparator,comp_false,sieve_match_part_checker): Added support for relational tests. * libsieve/tests.c (sieve_test_address,sieve_test_header): Likewise. * sieve/testsuite/scripts/rel-address.sv: New file. * sieve/testsuite/scripts/rel-hairy.sv: New file. * sieve/testsuite/scripts/rel-header.sv: New file. * sieve/testsuite/scripts/DISTFILES (rel-address.sv,rel-hairy.sv) (rel-header.sv): New files * sieve/testsuite/sieve/relational.exp: New file. * sieve/testsuite/sieve/DISTFILES (relational.exp): Added * mail/z.c (mail_z): Fixed scrolling. * po/POTFILES.in: Added libsieve/relational.c. 2003-01-03 Wojciech Polak * pop3d/extra.c (pop3d_readline): Don't use `static char buffer[512]'. Use also ifile directly instead of FILE *fp. * pop3d/pop3d.h (pop3d_readline): Changed prototype. * pop3d/pop3d.c: Use pop3d_readline(buffer, sizeof (buffer)). * pop3d/user.c: Likewise. 2003-01-02 Sergey Poznyakoff * configure.ac: New ac_subst variable BUILD_MH_EXEC_HOOK * mh/Makefile.am: Enble install-exec-hook only if BUILD_MH_EXEC_HOOK is set. 2003-01-01 Wojciech Polak * COPYING: Removed. 2002-12-31 Jeff Bailey <jbailey@gnu.org> * auth/Makefile.am: Correct copyright year, add license information. * sieve/testsuite/Makefile.am: Likewise. * testsuite/Makefile.am: Likewise. * sieve/Makefile.am: Likewise. * scripts/guile-1.6/Makefile.am: Likewise. * scripts/guile-1.4/Makefile.am: Likewise. * scripts/Makefile.am: Likewise. * readmsg/testsuite/Makefile.am: Likewise. * readmsg/Makefile.am: Likewise. * mh/Makefile.am: Likewise. * messages/testsuite/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * pop3d/testsuite/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * mapi/Makefile.am: Likewise. * mail.remote/testsuite/Makefile.am: Likewise. * mail.remote/Makefile.am: Likewise. * mail.local/testsuite/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * mailbox2/pop3/Makefile.am: Likewise. * mailbox2/mbox/Makefile.am: Likewise. * mailbox2/include/mailutils/sys/Makefile.am: Likewise. * mailbox2/include/mailutils/Makefile.am: Likewise. * mailbox2/include/Makefile.am: Likewise. * mailbox2/Makefile.am: Likewise. * mailbox/testsuite/Makefile.am: Likewise. * mailbox/include/Makefile.am: Likewise. * mailbox/Makefile.am: Likewise. * mail/testsuite/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * m4/Makefile.am: Likewise. * libsieve/Makefile.am: Likewise. * libmu_scm/Makefile.am: Likewise. * lib/posix/Makefile.am: Likewise. * lib/Makefile.am: Likewise. * include/mailutils/gnu/Makefile.am: Likewise. * include/mailutils/Makefile.am: Likewise. * include/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * imap4d/testsuite/Makefile.am: Likewise. * guimb/scm/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * from/testsuite/Makefile.am: Likewise. * from/Makefile.am: Likewise. * frm/testsuite/Makefile.am: Likewise. * examples/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * dotlock/Makefile.am: Likewise. * doc/texinfo/Makefile.am: Likewise. * doc/rfc/Makefile.am: Likewise. * doc/man/Makefile.am: Likewise. * doc/Makefile.am: Likewise. * comsat/Makefile.am: Likewise. * Makefile.am: Likewise. * configure.ac: Update FSF Address 2002-12-31 Wojciech Polak * COPYING: New file. * mailutils.spec.in: Fixed. 2002-12-31 Sergey Poznyakoff * include/mailutils/guile.h: New file. Interface declarations for libmu_scm.h * include/mailutils/Makefile.am: Added guile.h. * libmu_scm/mu_scm.h: Include <mailutils/guile.h> * libmu_scm/mu_mime.c: Removed unneded inlcudes. * libmu_scm/mu_scm.c: Likewise. * libmu_scm/mu_util.c: Likewise. * libmu_scm/mu_guimb.c: Include "mu_scm.h" * guimb/Makefile.am: Removed -I$(top_srcdir)/libmu_scm * mail.local/Makefile.am: Likewise. * mail.local/script.c: Include <mailutils/guile.h> * mailbox/Makefile.am (mailutils_config_CFLAGS): Corrected definition of AUTHLIBS. * guimb/guimb.h: Added missing includes. * include/mailutils/body.h: Use __PMT in nested declarations for C++ compatibility. * include/mailutils/debug.h: Likewise. * include/mailutils/envelope.h: Likewise. * include/mailutils/error.h: Likewise. * include/mailutils/filter.h: Likewise. * include/mailutils/header.h: Likewise. * include/mailutils/message.h: Likewise. * include/mailutils/mutil.h: Likewise. * include/mailutils/observer.h: Likewise. * include/mailutils/registrar.h: Likewise. * include/mailutils/stream.h: Likewise. * include/mailutils/attribute.h: Likewise. * include/mailutils/auth.h: Likewise. * include/mailutils/argp.h: Enclosed declarations in extern "C" block. 2002-12-29 Wojciech Polak * mail/mail.c: Updated FSF address. * mailbox/mu_argp.c: Likewise. * mh/mh_argp.c: Likewise. 2002-12-29 Wojciech Polak * Makefile.am: Added "dist-bzip2" to AUTOMAKE_OPTIONS. 2002-12-29 Sergey Poznyakoff * mail/mail.c (realcursor): Removed. The position of the point is kept in the cursor variable. * mail/util.c (util_msglist_command, util_msglist_esccmd): Removed. (util_foreach_msg,util_range_msg): New functions. Iterate across message set or range calling given function for each message. * mail/mail.h (util_msglist_command, util_msglist_esccmd): Removed. (realcursor): Removed. (util_foreach_msg,util_range_msg): New functions. * mail/delete.c: Rewritten using new iterator functions. * mail/dp.c: Likewise. * mail/edit.c: Likewise. * mail/eq.c: Likewise. * mail/file.c: Likewise. * mail/followup.c: Likewise. * mail/from.c: Likewise. * mail/headers.c: Likewise. * mail/hold.c: Likewise. * mail/mbox.c: Likewise. * mail/msgset.y: Likewise. * mail/next.c: Likewise. * mail/previous.c: Likewise. * mail/print.c: Likewise. * mail/reply.c: Likewise. * mail/size.c: Likewise. * mail/summary.c: Likewise. * mail/top.c: Likewise. * mail/undelete.c: Likewise. * mail/var.c: Likewise. * mail/visual.c: Likewise. * mail/write.c: Likewise. * mail/z.c: Likewise. 2002-12-29 Wojciech Polak * auth/*: Fixed C source copyrights to be compatible with the GNU 'Maintaining' document, i.e. "This program" -> "GNU Mailutils". * cmc/*: Likewise. * examples/*: Likewise. * imap4d/*: Likewise. * include/mailutils/*: Likewise. * libmu_scm/*: Likewise. * libsieve/*: Likewise. * mailbox/*: Likewise. * mailbox2/*: Likewise. * mapi/*: Likewise. * mh/*: Likewise. * pop3d/*: Likewise. * po/POTFILES.in: Added missing mail/msgset.y. 2002-12-29 Sergey Poznyakoff * mail/util.c: Removed unneded global env_cursor. * mailbox/mailutils-config.c: Reflect addition of NLS libraries. 2002-12-28 Sergey Poznyakoff * dotlock/dotlock.c: Reverted today's changes. Failed experiment. * mail.remote/mail.remote.c: Likewise. * mail.local/main.c: Added call to mu_init_nls. * sieve/testsuite/Redirect: Reflect changes to libsieve/actions.c. 2002-12-28 Sergey Poznyakoff * doc/texinfo/Makefile.am: Added fdl.texi * include/mailutils/stream.h: New flag MU_STREAM_ALLOW_LINKS: allow links on a file. Needed for MH. * mailbox/file_stream.c: Handle MU_STREAM_ALLOW_LINKS. * mailbox/mbx_mh.c: Create message stream with MU_STREAM_ALLOW_LINKS bit set. * libsieve/actions.c: Use X-Loop-Prevention header instead of X-Sender. * mail/followup.c: Bugfix: do not translate header names * mail/from.c: Bugfix: date field has always fixed length. * mailbox/argp-help.c: include mailutils/nls.h. Otherwise i18n is disabled. 2002-12-28 Wojciech Polak * doc/texinfo/mailutils.texi: Fixed copyright (FDL). * doc/texinfo/fdl.texi: New file. 2002-12-28 Sergey Poznyakoff * dotlock/dotlock.c: Exclude '\v' from xgettext markers. * mail.local/main.c: Likewise. * mail.remote/mail.remote.c: Likewise. 2002-12-27 Wojciech Polak * doc/texinfo/mailutils.texi: Use @copying. * doc/texinfo/programs.texi: Minor formatting. 2002-12-27 Sergey Poznyakoff * auth/Makefile.am: Added NLS support. * auth/pam.c: Likewise. * auth/sql.c: Likewise. * auth/virtual.c: Likewise. * mail/reply.c: The To: and Cc: needn't be translated. * dotlock/dotlock.c: Added missing N_() markers. * frm/frm.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.c: Likewise. * libsieve/argp.c: Likewise. * mail/mail.c: Likewise. * mail.local/main.c: Likewise. * mail.remote/mail.remote.c: Likewise. * mailbox/mu_argp.c: Likewise. * mailbox/mu_auth.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/mhpath.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * readmsg/readmsg.c: Likewise. * sieve/sieve.c: Likewise. * pop3d/popauth.c: Likewise. * comsat/comsat.c: Likewise. * po/POTFILES.in: Updated 2002-12-27 Jordi Mallach <jordi@gnu.org> * mh/inc.c: Fixed typo. * mh/repl.c: Likewise. 2002-12-27 Sergey Poznyakoff * configure.ac: Set version number to 0.2.1. * mail/mail.c: Removed startup banner. Bugfix: --quit option was handled incorrectly * doc/texinfo/programs.texi: Removed references to `set quiet' * mail/quit.c: Use ngettext * mail/summary.c: Likewise. * frm/frm.c: Likewise. * mail/testsuite/mail/folder.exp: Reflect recent changes in the handling of plurals. * mail/testsuite/mail/write.exp: Likewise. * mail.remote/Makefile.am: Added @INTLINCS@ and @LTLIBINTL@ * AUTHORS: Added Wojciech Polak. 2002-12-27 Wojciech Polak * mail/summary.c: Small NLS improvement. * mail/quit.c: Likewise. * frm/frm.c: Likewise. 2002-12-26 Wojciech Polak * po/POTFILES.in: Updated. * dotlock/dotlock.c: Added NLS. * from/from.c: Likewise. * mail.remote/mail.remote.c: Likewise. * mh/fmtcheck.c: Likewise. * mh/folder.c: Likewise. * mh/inc.c: Likewise. * mh/mh_argp.c: Likewise. * mh/mh_ctx.c: Likewise. * mh/fmtgram.y: Likewise. * mh/mh_getopt.c: Likewise. * mh/mh_init.c: Likewise. * mh/mh_msgset.c: Likewise. * mh/mhpath.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmf.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. 2002-12-26 Wojciech Polak * po/POTFILES.in: Updated. * sieve/sieve.c: Enabled NLS. * doc/texinfo/mailutils.texi: Small improvement. * COPYING.FDL: The Free Documentation License has been upgraded from 1.1 to 1.2. 2002-12-25 Wojciech Polak * po/POTFILES.in: Updated. * mailbox/mu_argp.c: Added NLS. * mailbox/muerrno.c: Likewise. * mailbox/message.c: Likewise. * libsieve/*: Likewise. 2002-12-25 Sergey Poznyakoff * comsat/action.c: Do not include \r\n to the i18n strings. * pop3d/popauth.c: Fixed typo in docstring. Thanks to Jordi Mallach for both. 2002-12-25 Sergey Poznyakoff * imap4d/fetch.c (fetch_internaldate) Do not use %X in strftime format: it produces locale-dependent output. * mh/mh_format.c (mh_format): Fixed format spec. 2002-12-24 Wojciech Polak * po/POTFILES.in: Updated. * po/.cvsignore: Removed Makevars. * mail.local/*: Added NLS. * mailbox/Makefile.am: Removed "-I${top_srcdir}/intl" from INCLUDES due to @INTLINCS@. 2002-12-24 Sergey Poznyakoff * doc/texinfo/Makefile.am: Fixed referencing /scripts/missing program. * po/.cvsignore: Removed LINGUAS. 2002-12-24 Sergey Poznyakoff * configure.ac: Specify use-libtool to AM_GNU_GETTEXT. Define WITH_INCLUDED_LIBINTL and INTLINCS if we are using the included gettext. * include/mailutils/nls.h: When using included libintl, use only intl/libgnuintl.h. Using system default libintl.h on systems with older libintls causes random coredumps. * mailbox/mu_argp.c (mu_conf_option): Added WITH_INCLUDED_LIBINTL. * libsieve/sieve.l: Documented the grammar. * po/.cvsignore: New file * .cvsignore: Updated. * m4/.cvsignore: Ignore gettext's m4 files. * m4/Makefile.am: Include gettext's m4 into the distribution. * scripts/.cvsignore: Ignore autogenerated files. * auth/Makefile.am: Added @INTLINCS@ and @LTLIBINTL@ where appropriate. * comsat/Makefile.am: Likewise. * dotlock/Makefile.am: Likewise. * examples/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * from/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * libmu_scm/Makefile.am: Likewise. * libsieve/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * mailbox/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * mh/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * readmsg/Makefile.am: Likewise. * sieve/Makefile.am: Likewise. 2002-12-24 Wojciech Polak * po/POTFILES.in: Updated. * imap4d/*: Added NLS. * guimb/*: Likewise. * sieve/sieve.c: Likewise. 2002-12-23 Wojciech Polak <polak@gnu.org> * po/: New directory. * po/Makevars: New file. * po/POTFILES.in: Likewise. * po/LINGUAS: Likewise. * po/ChangeLog: Likewise. * mailbox/nls.c: New file. NLS main code. * mailbox/Makefile.am: Updated. * include/mailutils/nls.h: New file. NLS main header file. * include/mailutils/Makefile.am: Updated. * configure.ac: Added NLS support, added AC_CONFIG_AUX_DIR([scripts]). * Makefile.am: Added 'intl po' to SUBDIRS. * mail/*: Added NLS support. * messages/*: Likewise. * readmsg/*: Likewise. * comsat/*: Likewise. * pop3d/*: Likewise. * frm/*: Likewise. * mail/delete.c: Fixed. MSG_NODELETED. 2002-12-22 Jeff Bailey <jbailey@nisa.net> * mailbox/mbx_maildir.c: Initial checkin of template * mailbox/Makefile.am: (libmailbox_la_SOURCES) Add mbx_maildir.c 2002-12-20 Sergey Poznyakoff * libsieve/sieve.l: Implemented shell-like extension for multiline strings. They can start now with text:[-][delimiter], the dash meaning 'strip leading tabs', the 'delimiter' overriding default end-of-text delimiter (.) * doc/texinfo/libsieve.texi: Documented text:[-][delimiter] extension. * TODO: Updated 2002-12-16 Sergey Poznyakoff * doc/texinfo/Makefile.am: Added trailing slash to the default BASE_URL * doc/texinfo/libmu_scm.texi: Fixed use of @deffn * doc/texinfo/libmuauth.texi: Likewise. * doc/texinfo/libsieve.texi: Likewise. The sources are tagged "rel_0_2". 2002-12-15 Sergey Poznyakoff * configure.ac: Raised version number to 0.2 * doc/texinfo/libmuauth.texi: Spellcheck. * doc/texinfo/libsieve.texi: Likewise. * TODO: Updated. 2002-12-14 Sergey Poznyakoff * mail/previous.c: Skip deleted messages * mail/next: Likewise. * auth/sql.c (mu_auth_sql_by_uid): Fixed typo. * include/mailutils/libsieve.h: Changed type of `number' to size_t. * libsieve/sieve.y (union): Likewise * include/mailutils/mu_auth.h: Removed duplicate declaration of mu_auth_data_free. * libsieve/actions.c (build_mime): To improve readability, output additional newline before reporting the reason. * libsieve/sieve.l: Allow backslashes in quoted strings. * sieve/testsuite/Reject: Updated * doc/texinfo/libmu_scm.texi: New file. Documents libmu_scm library. * doc/texinfo/Makefile.am: Added libmu_scm.texi * doc/texinfo/libmuauth.texi: Updated * doc/texinfo/libsieve.texi: Updated * doc/texinfo/mailutils.texi: Updated * doc/texinfo/programs.texi: Updated * doc/texinfo/imap4.texi: Updated * doc/texinfo/mailer.texi: Updated * TODO: Updated * mh/TODO: New file * NEWS: Updated 2002-12-13 Sergey Poznyakoff * mail.local/mail.local.h: Create temporary mailbox instead of the temporary message, to avoid problems when running sieve fileinto. * mail.local/main.c: Likewise. * mail.local/script.c: Likewise. * doc/texinfo/Makefile.am: Added rules for generating web documentation. * doc/texinfo/index.html.in: New file. Template for generating web documentation index page. * doc/texinfo/framework.texi: Updated. * doc/texinfo/libsieve.texi: Likewise. * doc/texinfo/mailutils.texi: Likewise. * doc/texinfo/programs.texi: Likewise. 2002-12-12 Sergey Poznyakoff * mail.local/main.c (_sieve_action_log): Use vasprintf. * libsieve/sieve.l: Allow #include within a :text block * mh/inc.c: Use mu_errstring instead of strerror. * mh/mh_init.c (mh_open_folder): Changed default open flags to MU_STREAM_RDWR. 2002-12-11 Sergey Poznyakoff * examples/numaddr.c: Fixed malformed comment. * doc/texinfo/libsieve.texi: Updated. 2002-12-11 Sergey Poznyakoff * configure.ac: Added --enable-experimental option to enable building of experimental/unfinished utilities. Currently it controls mh utils. * README: Document --enable-experimental option. * examples/addr.c: Include string.h. Add typecasts to the arguments of printf-like functions where necessary. * examples/base64.c: Likewise. * examples/mimetest.c: Add typecasts to the arguments of printf-like functions where necessary. * examples/mta.c: Likewise. * mail/var.c: Likewise. * mailbox/folder_imap.c: Likewise. * mailbox/mbx_imap.c: Likewise. * mailbox/mbx_mbox.c: Likewise. * mailbox/mbx_mh.c: Likewise. * mh/mh_global.c: Likewise. * mh/mh_format.c (struct mh_machine): Changed type of arg_num to long. * imap4d/imap4d.c: Cast third argument to accept to socklen_t*. Add typecasts to the arguments of printf-like functions where necessary. * pop3d/pop3d.c: Likewise. * lib/mu_dbm.c: Include xalloc.h * sieve/sieve.c: Include mu_asprintf.h * examples/numaddr.c: Added extensive comments. * doc/texinfo/libsieve.texi: Updated. * doc/texinfo/programs.texi: Updated. 2002-12-10 Sergey Poznyakoff * mailbox/filter_trans.c (qp_decode): Bugfix: extend chr to accomodate three characters and terminate it with zero. * libsieve/comparator.c (i_octet_regex): Removed misleading comment. * mail/mail.h: Include mu_asprintf.h * TODO: Updated * doc/texinfo/libsieve.texi: Likewise. 2002-12-10 Sergey Poznyakoff * configure.ac: Define and export SIEVE_MODDIR. * examples/Makefile.am: Use SIEVE_MODDIR. * libsieve/Makefile.am: Likewise. * libsieve/actions.c (sieve_register_standard_actions): Register "fileinto" in non-required state to comply to the RFC. * libsieve/argp.c (sieve_argp_parser): Always add SIEVE_MODDIR to sieve_library_path. * doc/texinfo/libsieve.texi: Documented some aspects of the` input language. * doc/texinfo/programs.texi: Documented :sieve option group * examples/addr.c: Include mutil.h * guimb/guimb.h: Include mu_asprintf.h * mail/mail.h: Likewise. * imap4d/append.c: Removed debugging hook * imap4d/auth_gss.c: Added typecasts to shut the compiler warnings. * libmu_scm/mu_body.c: Likewise. * libmu_scm/mu_message.c: Likewise. * mailbox/locker.c: Likewise. * imap4d/util.c: Initialize automatic variable. * libsieve/tests.c: Likewise. * mail/util.c: Likewise. * mailbox/adxodress.c: Likewise. * mailbox/file_stream.c: Likewise. * mailbox/date.c: Added missing includes * mailbox/tcp.c: Removed unused variables. * imap4d/search.c (_scan_body): Bugfix. Add null terminator to the string read. * imap4d/testsuite/imap4d/search.exp: Fixed `wine' testcase. Fixed `SELECT INBOX' testcase. 2002-12-10 Sergey Poznyakoff * include/mailutils/libsieve.h (sieve_include_path,sieve_library_path): New globals * libmu_scm/Makefile.am: Fixed install-data-hook. Thanks to Jordi Mallach. * libsieve/argp.c: New file. Sieve-specific command line handling. * libsieve/Makefile.am: Added argp.c * libsieve/load.c (sieve_load_add_path,sieve_load_add_dir): New functions. * libsieve/sieve.h: Likewise. * libsieve/sieve.l: New extension statement #searchpath controls the search path for dynamically loaded extensions. * mail.local/main.c (argp_capa): Added "sieve" capability. (main): Invoke mu_sieve_argp_init(). * sieve/sieve.c: Likewise. * sieve/testsuite/sieve/ext.exp: Use -L option instead of setting environment variable. * mailbox/mu_argp.c (mu_license_argp_option): Removed short option 'L', it is used by sieve argp stuff. 2002-12-09 Sergey Poznyakoff * libsieve/actions.c (build_mime,sieve_action_redirect): free return from mu_get_user_email(). * libsieve/sieve.y (statement production): Gross bugfix: do not run sieve_slist_destroy on the list, just list_destroy. All the items are already registered in the memory pool and will be freed by sieve_machine_destroy. * libsieve/tests.c (_get_address_part): Bugfix: assign to *data only if ret is not null. * libsieve/util.c (_comp_action): Do not run comparator if the sample is NULL. * mail.local/main.c (sieve_test): Bugfix: run sieve_machine_destroy() only if the compilation succeeded. (deliver): Removed unused variable sb. Use isize instead. * mailbox/mutil.c (mu_get_user_email): Added comment. 2002-12-05 Sergey Poznyakoff * lib/Makefile.am (INCLUDES): Fixed path. * configure.ac: Check for libltdl only if enable_shared is set. * examples/mta.c: Do not use asprintf. * lib/pin.c: It is needed by argp stuff. Moved to ... * mailbox/pin.c: ... here * lib/Makefile.am: Moved pin.c from lib to mailbox * mailbox/Makefile.am: Likewise. * comsat/comsat.h: Removed unneded inclusion of getopt.h * frm/frm.c: Likewise. * imap4d/imap4d.h: Likewise. * pop3d/pop3d.h: Likewise. * mail.local/mail.local.h: Likewise. * mh/mh_getopt.c: Likewise. * readmsg/readmsg.h: Likewise. * imap4d/fetch.c (fetch_internaldate): Added typecast to shut up the compiler warning. * mailbox/mbx_default.c (get_homedir): Returned value is not const. 2002-12-05 Sergey Poznyakoff * configure.ac: Check for presense of getopt.h * examples/mta.c: Do not use program_invocation_short_name: examples are not linked against libmailutils. * frm/testsuite/frm/test.exp: Override FOLDER environment variable. * from/testsuite/from/test.exp: Likewise. * messages/testsuite/messages/test.exp: Likewise. * readmsg/testsuite/readmsg/test.exp: Likewise. * sieve/testsuite/lib/sieve.exp: Likewise. * guimb/scm/Makefile.am: Use $? instead of $< in explicit rules. * libmu_scm/Makefile.am: Likewise. * lib/getopt.h: Moved to ... * include/mailutils/gnu/getopt.h: ... here. * include/mailutils/gnu/Makefile.am: getopt.h moved from lib to include/mailutils/gnu * lib/Makefile.am: Likewise. * include/mailutils/gnu/argp.h: Include local copy of getopt.h if the system does not provide one. * mailbox/Makefile.am (mailutils_config_LDADD): Added libmailutils.la * mailbox/mailutils-config.c (main): Do not print duplicate --link arguments. 2002-12-04 Sergey Poznyakoff * include/mailutils/argp.h (mu_print_options, mu_check_option): New functions. * mailbox/mu_argp.c: Likewise. * mailbox/mailutils-config.c: Added --info option (prints and tests for the values of compilation options). Improved help output. * doc/texinfo/programs.texi: Documented mailutils-config. 2002-12-04 Sergey Poznyakoff * TODO: Updated * configure.ac: Add mysql libraries to MYSQLLIBS * mailbox/Makefile.am: New target mailutils-config * mailbox/mailutils-config.c: New file. A utility program that prints compiler and loader flags necessary to build a program using mailutils libraries. 2002-12-03 Sergey Poznyakoff * libsieve/actions.c (sieve_action_reject): Fixed diagnostic messages. * m4/gssapi.m4: Bugfix: Properly restore LIBS, LDFLAGS and CFLAGS. 2002-12-02 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/mime.c (_mime_body_read): reset the part offset when resetting the message. 2002-11-29 Sergey Poznyakoff * mailbox/date.c: New version of mu_tm2time function. The previous version of mu_tm2time incorrectly handled dates within the DST period. * mailbox/mutil.c: Moved time functions to date.c * mailbox/Makefile.am: Added date.c * imap4d/fetch.c (fetch_internaldate): Use mu_parse_ctime_date_time. * imap4d/testsuite/imap4d/fetch.exp: Fixed wrong dates. * NEWS: Updated. * doc/texinfo/libsieve.texi: Updated. * libsieve/actions.c (sieve_action_keep): Remove the delete mark from the message. * guimb/scm/sieve-core.scm (action-keep): Likewise. * libsieve/sieve.y (sieve_machine_init): Fixed inconsistent return value. * auth/Makefile.am: Removed traces of ansi2knr.c * comsat/Makefile.am: Likewise. * dotlock/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * from/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * libmu_scm/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * mail.remote/Makefile.am: Likewise. * mapi/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * readmsg/Makefile.am: Likewise. 2002-11-29 Sergey Poznyakoff * mailbox/file_stream.c (_stdin_file_read): Test for eof condition. * examples/base64.c: New file. Sample base64 encoder-decoder. * examples/Makefile.am: Added base64 * mailbox/testsuite/Encode: New file. Data for base64 test. * mailbox/testsuite/Decode: Likewise. * mailbox/testsuite/Makefile.am: Added Encode, Decode. * mailbox/testsuite/mailbox/base64.exp: New file. Testcase for base64 filters. * mailbox/testsuite/mailbox/DISTFILES: Added base64.exp * testsuite/lib/mailutils.exp (mu_test_file): Fixed comment. 2002-11-28 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/filter_trans.c (qp_encode): fixed quoted-printable encoding. * mailbox/mime.c (_mime_set_content_type): when a MIME message has only one part, set the Content-transfer-encoding of the message to be the one of the part. 2002-11-27 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/filter_trans.c (trans_read): applied patch from Sergey Poznyakoff, so that filters don't forget the last bytes of a file. Fixed an uninitialized variable problem. * libsieve/load.c: fixed compilation when HAVE_LIBLTDL is not defined. 2002-11-25 Sergey Poznyakoff * doc/texinfo/Makefile.am: Fake configure into including srcdir to VPATH. * include/mailutils/libsieve.h (sieve_malloc,sieve_mstrdup) (sieve_mrealloc,sieve_mfree): New functions. * libsieve/util.c: Likewise. * libsieve/comparator.c: Use sieve_m.* memory allocation functions. * libsieve/prog.c: Likewise. * libsieve/sieve.l: Likewise. * libsieve/sieve.y: Likewise. * doc/texinfo/libsieve.texi: Updated 2002-11-25 Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/address.c (address_concatenate): cleanup the address cache during concatenation. 2002-11-25 Sergey Poznyakoff * mail.local/main.c (deliver): Bugfix: n and isize were not declared. * sieve/sieve.c (options): Fixed spelling in the help line. * libsieve/load.c: Removed debugging hacks. Always call lt_dlinit and add a call to lt_dlexit to the destructor. * examples/Makefile.am: Pointed moddir to more appropriate place. * mail/z.c: Bugfix. Use mail_from0(), not mail_from(). * doc/texinfo/libmuauth.texi: New file. A placeholder for documentation regarding libmuauth. * doc/texinfo/libsieve.texi: New file. Documentation for the sieve library. * doc/texinfo/Makefile.am: Replaced explicit rules to generate *.c.texi files with an implicit rule generating *.inc files. The rule itself is modified to preserve the heading comment. Added libmuauth.texi and libsieve.texi to sources. * doc/texinfo/.cvsignore: Added *.inc * doc/texinfo/programs.texi: Documented new version of sieve (not fully, still...) * doc/texinfo/mailutils.texi: Added references to libmuauth and libsieve. * doc/texinfo/framework.texi: Include *.inc files instead of *.c.texi. Added standard GNU copyright header. * doc/texinfo/address.texi: Likewise. * doc/texinfo/attribute.texi: Likewise. * doc/texinfo/auth.texi: Likewise. * doc/texinfo/body.texi: Likewise. * doc/texinfo/c-api.texi: Likewise. * doc/texinfo/encoding.texi: Likewise. * doc/texinfo/envelope.texi: Likewise. * doc/texinfo/folder.texi: Likewise. * doc/texinfo/headers.texi: Likewise. * doc/texinfo/imap4.texi: Likewise. * doc/texinfo/iterator.texi: Likewise. * doc/texinfo/locker.texi: Likewise. * doc/texinfo/mailbox.texi: Likewise. * doc/texinfo/maildir.texi: Likewise. * doc/texinfo/mailer.texi: Likewise. * doc/texinfo/mbox.texi: Likewise. * doc/texinfo/message.texi: Likewise. * doc/texinfo/mh.texi: Likewise. * doc/texinfo/mime.texi: Likewise. * doc/texinfo/nntp.texi: Likewise. * doc/texinfo/parse822.texi: Likewise. * doc/texinfo/pop3.texi: Likewise. * doc/texinfo/sendmail.texi: Likewise. * doc/texinfo/smtp.texi: Likewise. * doc/texinfo/stream.texi: Likewise. * doc/texinfo/url.texi: Likewise. 2002-11-22 Sergey Poznyakoff * configure.ac: Added check for installed libltdl. Bumped version number to 0.1.3. * mailbox/mu_argp.c (mu_conf_option): Added HAVE_LIBLTDL * examples/numaddr.c: New file. Sample loadable test for sieve. * examples/Makefile.am: Added numaddr.c (AM_LDFLAGS): Removed libmailutils. It's not used by examples. * libsieve/load.c: New file. Support for loadable extensions for sieve. * libsieve/Makefile.am: Added load.c * libsieve/require.c (sieve_require): Implemented loadable tests. * libsieve/comparator.c (sieve_require_comparator): Implemented loadable comparators. * include/mailutils/libsieve.h (sieve_require_action) (sieve_require_test): New functions. * libsieve/register.c: Likewise. * sieve/Makefile.am (sieve_LDFLAGS): Added -export-dynamic * sieve/sieve.c (main): Removed unneded goto. Added call to sieve_machine_destroy at the end. * sieve/testsuite/Reject: Use regexp instead of hardcoded version number. * testsuite/spool/bigto.mbox: New file. A mailbox for testing the behaviour of various utilities on structured headers that contain long lists of addresses. * testsuite/spool/DISTFILES: Added bigto.mbox * frm/testsuite/frm/test.exp: Test frm -l on long to: headers. * sieve/testsuite/scripts/numaddr.sv: New file. A script invoking loadable test. * sieve/testsuite/scripts/DISTFILES: Added numaddr.sv * sieve/testsuite/sieve/ext.exp: New file. Test for sieve loadable extensions. * sieve/testsuite/sieve/DISTFILES: Added ext.exp 2002-11-21 Sergey Poznyakoff * mailbox/file_stream.c (_file_destroy): Bugfix. Do not close the stream. * imap4d/append.c (imap4d_append0): Simplified a lot. * imap4d/testsuite/lib/imap4d.exp (default_imap4d_start): Save imap4d spawn id in the global variable. (default_imap4d_stop): Moved functionality from imap4d_exit (imap4d_stop): Call default_imap4d_stop unless it has already been called. (imap4d_exit): Call imap4d_stop * imap4d/testsuite/imap4d/anystate.exp: Call imap4d_stop at the end. * imap4d/testsuite/imap4d/append.exp: Likewise. * imap4d/testsuite/imap4d/create.exp: Likewise. * imap4d/testsuite/imap4d/examine.exp: Likewise. * imap4d/testsuite/imap4d/expunge.exp: Likewise. * imap4d/testsuite/imap4d/fetch.exp: Likewise. * imap4d/testsuite/imap4d/list.exp: Likewise. * imap4d/testsuite/imap4d/search.exp: Likewise. * imap4d/testsuite/imap4d/x.exp: Likewise. * mail/testsuite/lib/mail.exp (default_mail_start): Save mail spawn id in the global variable. (default_mail_stop): Moved functionality from mail_exit (mail_stop): Call default_mail_stop unless it has already been called. (mail_exit): Call mail_stop * mail/testsuite/mail/alias.exp: Call mail_stop at the end. * mail/testsuite/mail/folder.exp: LIkewise. * mail/testsuite/mail/read.exp: LIkewise. * mail/testsuite/mail/send.exp: LIkewise. * mail/testsuite/mail/tag.exp: LIkewise. * mail/testsuite/mail/write.exp: LIkewise. * pop3d/testsuite/lib/pop3d.exp: Fixed exit functions. * mailbox/mailbox.c (mailbox_flush,mailbox_append_message) (mailbox_save_attributes,mailbox_expunge): Return EACCES if mailbox was open readonly. 2002-11-21 Sergey Poznyakoff * mailbox/parse822.c (parse822_quoted_string): Free qstr before returning error status. Otherwise, addresses like "A wrong quote\" <addr@dom.ain> hit the assert in parse822_word() and coredump. (parse822_word_dot): Removed misleading comment. * mailbox/testsuite/Addrs: Added a testcase for this. 2002-11-20 Sergey Poznyakoff * mailbox/mailer.c: Fixed indentation. * include/mailutils/libsieve.h (sieve_test_lookup) (sieve_action_lookup,sieve_register_test) (sieve_register_action,sieve_register_comparator) (sieve_comparator_lookup,sieve_require_comparator) (sieve_get_comparator): Accept the pointer to sieve machine as first argument. * libsieve/sieve.h (struct sieve_machine): New members test_list, action_list and comp_list provide independent symbol space for this particular instance of sieve. * libsieve/actions.c (build_mime,sieve_action_redirect): Removed unused argument. (sieve_register_standard_actions): Changed declaration. * libsieve/comparator.c (sieve_register_comparator) (sieve_require_comparator,sieve_comparator_lookup) (sieve_get_comparator) (sieve_register_standard_comparators): Accept the pointer to sieve machine as first argument. * libsieve/register.c (sieve_test_lookup,sieve_action_lookup) (sieve_register_test,sieve_register_action): Accept the pointer to sieve machine as first argument. * libsieve/require.c: Adjust for above changes. * libsieve/sieve.y: Likewise. * libsieve/tests.c: Likewise. (sieve_test_header): New tag :mime. Directs header to test headers in all parts of a multipart message, not only main message headers. * libsieve/util.c (sieve_tag_lookup): New function. * sieve/sieve.c: Added "mailer" capability. Removed spurious --mailer-url command line switch. (main): Do not create mailer. sieve_message() will do it if necessary. * sieve/testsuite/scripts/header-mime.sv: New file. Test script for 'header :mime' extension. * sieve/testsuite/scripts/DISTFILES: Added header-mime.sv * sieve/testsuite/sieve/header.exp: Test :mime tag. * mail.local/mail.local.h (mda): Changed prototype. (struct mda_data): Replaced FILE *fp with message_t msg. * mail.local/script.c: Adjust for above changes. * mail.local/main.c (make_tmp): Create a message instead of returning file pointer. (argp_capa): Added "mailer" capability. (sieve_test): Second argument. (mda,deliver): Take message_t as first argument, instead of FILE*. 2002-11-19 Sergey Poznyakoff * libsieve/comparator.c (i_ascii_casemap_contains): Fixed typecast. * mailbox/mutil.c (mu_set_user_email): Set user's domain as well. * sieve/testsuite/Reject: Fixed `envelope from' address. 2002-11-19 Sergey Poznyakoff * sieve/sieve.c: New options: --verbose to verbosely log executed actions, --log-facility to switch all diagnostic output to syslog. * libsieve/comparator.c (i_ascii_numeric_is): Support for :comparator i;ascii-numeric. Fixed handling of :comparator i;ascii-casemap :matches and :contains. Added i;ascii-numeric :is comparator. * libsieve/runtime.c (sieve_message): New function. * libsieve/sieve.y (sieve_machine_init,sieve_machine_destroy): Fixed inconsistencies. * libsieve/tests.c (_get_address_part): Made static to avoid name clashes. * libmu_scm/mu_address.c: Likewise. * libsieve/util.c (sieve_slist_destroy): Use list_do. It is faster. * sieve/testsuite/lib/sieve.exp (sieve_test): Pass --verbose switch to sieve. Added -retcode option. * sieve/testsuite/scripts/i-casemap-contains.sv: New file. * sieve/testsuite/scripts/i-casemap-is.sv: New file. * sieve/testsuite/scripts/i-casemap-matches.sv: New file. * sieve/testsuite/scripts/i-casemap-regex.sv: New file. * sieve/testsuite/scripts/i-numeric-contains.sv: New file. * sieve/testsuite/scripts/i-numeric-is.sv: New file. * sieve/testsuite/scripts/i-octet-contains.sv: New file. * sieve/testsuite/scripts/i-octet-is.sv: New file. * sieve/testsuite/scripts/i-octet-matches.sv: New file. * sieve/testsuite/scripts/i-octet-regex.sv: New file. * sieve/testsuite/scripts/DISTFILES: Added scripts for testing comparators. * sieve/testsuite/sieve/i-casemap.exp: New file. * sieve/testsuite/sieve/i-numeric.exp: New file. * sieve/testsuite/sieve/i-octet.exp: New file. * sieve/testsuite/sieve/DISTFILES: Added scripts for testing comparators. * testsuite/spool/sieve.mbox: Add X-Number header to msg 2 for testing i;ascii-numeric comparator. * sieve/testsuite/Redirect: Reflect changed headers in msg 2 * sieve/testsuite/Reject: Likewise * sieve/testsuite/sieve/action.exp: Likewise. * testsuite/lib/mailutils.exp: Bugfix: always check for newline after matched pattern. * mail.local/Makefile.am: Added libsieve.la * mail.local/mail.local.h: Include libsieve.h * mail.local/main.c: Support for user-defined sieve filters. Improved debugging. * TODO: Updated. 2002-11-18 Sergey Poznyakoff * mailbox/mailer.c (mailer_get_url): New function. * mailbox/sendmail.c (sendmail_send_message): Bugfix: stream_read should not use sendmail->offset for positioning. * examples/mta.c: Test if environment variable MTA_APPEND is set. * include/mailutils/libsieve.h: Added comments. * libsieve/actions.c: Implemented reject and redirect. * libsieve/sieve.h (struct sieve_machine): New members mailer and daemon_email. * libsieve/sieve.l: Call multiline_add for each line in ML state. * libsieve/sieve.y (sieve_get_mailer,sieve_set_mailer) (sieve_get_daemo_email,sieve_set_daemon_email): New functions. * sieve/Makefile.am: Enable testsuite subdir. * sieve/sieve.c: New option --email sets user email address. * sieve/testsuite/Reject: New file * sieve/testsuite/Redirect: New file * sieve/testsuite/Makefile.am: Added Reject and Redirect * sieve/testsuite/lib/sieve.exp (sieve_test): Pass --email and --mailer options to sieve. (sieve_driver_test): New procedure. * sieve/testsuite/scripts/redirect.sv: New file * sieve/testsuite/scripts/reject.sv: New file * sieve/testsuite/scripts/DISTFILES: Added redirect.sv and reject.sv * sieve/testsuite/sieve/redirect.exp: New file * sieve/testsuite/sieve/reject.exp: New file * sieve/testsuite/sieve/DISTFILES: Added redirect.exp and reject.exp * libmu_scm/mu_message.c (mu_message_set_header): Fixed memory leak. 2002-11-15 Sergey Poznyakoff * sieve/examples/ex-3.1b.sv: Require redirect. * sieve/examples/example.sv: Likewise. * sieve/testsuite/sieve/action.exp: Adapted for changed sieve diagnostics format. * sieve/testsuite/sieve/address.exp: Likewise. * sieve/testsuite/sieve/allof.exp: Likewise. * sieve/testsuite/sieve/anyof.exp: Likewise. * sieve/testsuite/sieve/envelope.exp: Likewise. * sieve/testsuite/sieve/exists.exp: Likewise. * sieve/testsuite/sieve/false.exp: Likewise. * sieve/testsuite/sieve/header.exp: Likewise. * sieve/testsuite/sieve/size.exp: Likewise. 2002-11-15 Sergey Poznyakoff * mailbox/list.c (list_replace): New function. * include/mailutils/list.h: Likewise. * mailbox/address.c (address_aget_local_part,address_aget_domain): New functions. * include/mailutils/address.h: Likewise. * mail.local/main.c (parse_opt): Use argp_error to report diagnostics. * include/mailutils/libsieve.h (sieve_retrieve_t): Extra argument. (sieve_destructor_t,sieve_tag_checker_t): New types. (sieve_value_t): New member v.ptr. (sieve_tag_def_t): Removed num member. (sieve_tag_group_t): New data type. (sieve_runtime_tag): Changed type of tag member to char *. (sieve_register_t): Removed unused members. Changed type of tags member. (sieve_register_test,sieve_register_action): Changed type of fourth argument (tags). (sieve_machine_destroy,sieve_machine_add_destructor): New functions. * libsieve/comparator.c: Added support for :regex matching type. * libsieve/prog.c: More thorough checking of tags. * libsieve/register.c (sieve_register_test) (sieve_register_action): Changed type of fourth argument (tags). * libsieve/require.c (sieve_require): Commented unimplemented parts of code. * libsieve/runtime.c (instr_run): Do not run the handler when in disassemble mode. * libsieve/sieve.h (struct sieve_machine): New member destr_list. (sieve_match_part_checker): New function. * libsieve/sieve.y (sieve_machine_init): Fixed return value. (sieve_machine_add_destructor,sieve_machine_destroy): New functions. * libsieve/tests.c: Implemented the rest of required sieve tests (address and envelope). * libsieve/util.c (sieve_value_create,sieve_type_str) (sieve_print_value): Handle SVT_POINTER data type. (sieve_print_value_list) tag member is now char *. (_comp_action): Call cp->retr continuously until it returns non-zero. 2002-11-14 Frederic Gobry <frederic.gobry@smartdata.ch> * include/mailutils/address.h: added declaration of address_dup. 2002-11-14 Sergey Poznyakoff * sieve/lex-sieve.lex: Removed * include/mailutils/libsieve.h (sieve_comparator_t,sieve_retrieve_t): New datatypes. (sieve_vlist_do,sieve_vlist_compare,sieve_comparator_lookup) (sieve_register_comparator,sieve_get_comparator): New functions. * libsieve/actions.c: (sieve_action_discard): Log output made compatible with that of CMU ported sieve. * libsieve/require.c (sieve_require): Handle "comparator-" prefix in require statements. * libsieve/runtime.c (instr_action): Increase action_count. (sieve_run): Log implicit keep action. * libsieve/sieve.h (struct sieve_machine) New member action_count. (sieve_register_standard_comparators): New function. (sieve_require_comparator): New function. * libsieve/sieve.y (action production): Fixed number of arguments in call to sieve_compile_error(). * libsieve/tests.c: Implemented header test. * libsieve/util.c (sieve_vlist_do, sieve_vlist_compare): New functions. * libsieve/comparator.c: New file. * libsieve/Makefile.am: Added comparator.c * sieve/examples/t-complex.sv: require "redirect". 2002-11-14 Sergey Poznyakoff Started actually rewriting sieve to use libsieve library. The CMU-based sources are available under the tag ver-0-1-2-with-cmu-sieve. * Makefile.am: Added libsieve. * configure.ac: Likewise. * mailbox/mbx_mboxscan.c (mbox_scan0): Compute uids before calling DISPATCH_ADD_MSG. * mailbox/mbx_mh.c (mh_scan0): Implemented EVT_MESSAGE_ADD notification. * include/mailutils/libsieve.h: Changed sieve_machine_t to be a pointer to structure. * libsieve/Makefile.am: Removed sv.c * libsieve/sv.c: Removed. * libsieve/runtime.c: Reflect change of sieve_machine_t type. * libsieve/sieve.y: Likewise. * libsieve/sieve.h (struct sieve_machine): New members: filename, logger, ticket, mu_debug. * libsieve/actions.c: Implemented stop, keep, discard and fileinto. * libsieve/tests.c: Implemented true, false, exists and size. * libsieve/util.c (sieve_value_get, sieve_log_action) (sieve_mark_deleted): New functions. * sieve/gram-sieve.y: Removed. * sieve/parseaddr.c: Removed. * sieve/sv.h: Removed. * sieve/tree.h: Removed. * sieve/addr-lex.l: Removed. * sieve/imparse.c: Removed. * sieve/parseaddr.h: Removed. * sieve/sieve-lex.l: Removed. * sieve/svcb.c: Removed. * sieve/util.c: Removed. * sieve/imparse.h: Removed. * sieve/script.c: Removed. * sieve/svctx.c: Removed. * sieve/util.h: Removed. * sieve/interp.c: Removed. * sieve/script.h: Removed. * sieve/sieve.h: Removed. * sieve/svfield.c: Removed. * sieve/addr.y: Removed. * sieve/interp.h: Removed. * sieve/sieve_err.c: Removed. * sieve/svfield.h: Removed. * sieve/comparator.c: Removed. * sieve/message.c: Removed. * sieve/sieve_err.h: Removed. * sieve/svutil.c: Removed. * sieve/comparator.h: Removed. * sieve/message.h: Removed. * sieve/sieve-gram.y: Removed. * sieve/sieve_interface.h: Removed. * sieve/tree.c: Removed. * sieve/AUTHORS: Removed. * sieve/COPYING: Removed. * sieve/NEWS: Removed. * sieve/README: Removed. * sieve/Makefile.am: Pruned for the new implementation. * sieve/sieve.c: Use libsieve calls. 2002-11-13 Sergey Poznyakoff * include/mailutils/libsieve.h: (sieve_vprintf_t): Removed. (sieve_parse_error_t): New data type. (sieve_compile): Changed prototype declaration. (sieve_get_data,sieve_get_message,sieve_get_message_num) (sieve_get_debug_level,sieve_mailbox,sieve_disass) (sieve_machine_init,sieve_machine_set_error) (sieve_machine_set_parse_error): New functions. * libsieve/README: Replaced BNZ with BZ. * libsieve/actions.c (fileinto_args): Fileinto takes string, not string-list. * libsieve/prog.c (sieve_code_command): Implemented implicit typecast from string to string-list. * libsieve/require.c: Use sieve_compile_error() to report parse errors. * libsieve/sieve.l: Likewise. * libsieve/util.c: Likewise. * libsieve/runtime.c: Verbose debugging. (instr_branch, instr_brz): New functions. (sieve_get_data,sieve_get_message,sieve_get_message_num) (sieve_get_debug_level,sieve_disass,sieve_mailbox): New functions * libsieve/sieve.h (sieve_op_t): New member `pc'. (struct sieve_machine): New members: errbuf,mailbox,msgno, msg,parse_error_printer. (sieve_error,sieve_debug): Removed prototype. (sieve_compile_error,instr_branch,instr_brz): New function. * libsieve/sieve.y: Implemented conditional blocks. The grammar is complete. * libsieve/sv.c: Modified to reflect changes in the API. 2002-11-13 Sergey Poznyakoff * mail/util.c (util_do_command): Interpret empty line as "next" command only when in interactive mode. 2002-11-12 Sergey Poznyakoff * libsieve/prog.c: New file. Code generator functions. * libsieve/runtime.c: New file. Runtime support. * libsieve/Makefile.am: Added prog.c and runtime.c. * include/mailutils/libsieve.h: Added basic code generation and debugging (conditional blocks still not implemented). * libsieve/actions.c: Likewise. * libsieve/register.c: Likewise. * libsieve/sieve.h: Likewise. * libsieve/sieve.l: Likewise. * libsieve/sieve.y: Likewise. * libsieve/sv.c: Likewise. * libsieve/tests.c: Likewise. * libsieve/util.c: Likewise. 2002-11-08 Sergey Poznyakoff * include/mailutils/libsieve.h: New file. * include/mailutils/Makefile.am: Added libsieve.h * libsieve/sieve.h: Moved publicly available declarations to <mailutils/libsieve.h> * libsieve/sieve.y: Fixed the grammar. Added union, types and the basic actions. * libsieve/sieve.l: Likewise. * libsieve/Makefile.am: Added new files. * libsieve/util.c (sieve_slist_destroy, sieve_value_create): New functions. * libsieve/tests.c: New file. Provides standard sieve tests (all noops, so far). * libsieve/actions.c: New file. Provides standard sieve actions (all noops, so far). * libsieve/require.c: New file. Handles "require" statement. * libsieve/register.c: New file. Contains the sieve namespace functions. 2002-11-07 Sergey Poznyakoff * mailbox/stream.c: Fix memory leak. Patch provided by Frederic Gobry <frederic.gobry@smartdata.ch> * mailbox/tcp.c: Likewise. * mail.local/mailquota.c: Fixed comment. * mail.local/main.c: Avoid unnecessary memory allocation. * libsieve/: New directory * libsieve/Makefile.am: New file. * libsieve/.cvsignore: New file. * libsieve/sieve.y: New file. * libsieve/sieve.l: New file. * libsieve/sieve.h: New file. * libsieve/util.c: New file. * libsieve/sv.c: New file. * sieve/ylwrap: Moved to ... * scripts/ylwrap: ... here * scripts/Makefile.am: Added ylwrap * sieve/Makefile.am: Removed ylwrap 2002-11-07 Sergey Poznyakoff * mail/mail.h (msgset_member,msgset_negate): New functions. * mail/msgset.y: Added negation of message sets. `from ! subject:/daily/' outputs all messages whose subject does not contain the word 'daily'. * mail/z.c: Fixed behaviour of z. when the total number of messages is less than the number of line per page of output. 2002-11-05 Sergey Poznyakoff * mail/reply.c: Add In-Reply-To and References headers to the outgoing message. * mail/var.c (var_quote): Output prefix sequence before each line of multiline headers. * mail/from.c (mail_from0): Function shared between from.c and headers.c * mail/headers.c: Use mail_from0 to avoid spurious diagnostics about deleted messages. * mail/msgset.y (yylex): allow for '-' in field names. Notice, that if the dash means 'range' and the first message in the range is not numeric, there should be whitespace between them. * mail/util.c (util_get_message): Expanded semantics of the last argument. It now contains flags that control how util_get_message operates. Flags are a bitwise sum of the following: MSG_ALL Return any message (deleted or not) MSG_NODELETED Do not return deleted messages. MSG_SILENT Do not output warnings about deleted messages. * mail/mail.h (mail_from0): New function. (MSG_ALL,MSG_NODELETED,MSG_SILENT): New macros. * mail/copy.c: Use MSG_.* macros in calls to util_get_message. * mail/delete.c: Likewise. * mail/followup.c: Likewise. * mail/hold.c: Likewise. * mail/mbox.c: Likewise. * mail/pipe.c: Likewise. * mail/print.c: Likewise. * mail/quit.c: Likewise. * mail/size.c: Likewise. * mail/top.c: Likewise. * mail/undelete.c: Likewise. * mail/write.c: Likewise. * mail/testsuite/mail/send.exp: Changed to reflect new reply behaviour. * include/mailutils/header.h: Added MU_HEADER_REFERENCES. * mail.local/main.c (make_tmp): Initialize auth to NULL. 2002-11-04 Sergey Poznyakoff * auth/virtual.c (mu_auth_virt_domain_by_name): Bugfix. Didn't allocate enough storage for mailbox_name. * mh/mh_format.c (print_string): Pad right if necessary. * m4/enable.m4: Translate dot to underscore in variable names. * configure.ac: Use MU_ENABLE_SUPPORT for virtual-domains. * imap4d/testsuite/lib/imap4d.exp: Use ENABLE_VIRTUAL_DOMAINS * pop3d/testsuite/lib/pop3d.exp: Likewise. * mailbox/mu_argp.c: Likewise. * mailbox2/mutil.c: Likewise. * README: Documented new --disable options. * doc/texinfo/message.texi: correct the prototype of message_is_multipart() (patch by Olivier Bornet). * examples/http.c: Removed include <sys/select.h> * pop3d/pop3d.c (main): Improved check for debugging mode. * imap4d/imap4d.c: Likewise. * pop3d/testsuite/Makefile.am: Added config to test_dirs. * imap4d/testsuite/Makefile.am: Likewise. * testsuite/lib/mailutils.exp (mailer_test): New procedure for testing mailers. (mu_init): New option -noflags skips the default initialization of MU_TOOL_FLAGS. * mail.remote/testsuite/lib/mail.remote.exp: Invoke mu_init with -noflags. * mail.remote/testsuite/lib/mail.remote.exp (mailer_remote_test): Use mailer_test. * mail.local/mail.local.h (switch_user_id): Changed prototype to honour mu_auth_data->change_uid member. * mail.local/main.c: Likewise. * mail.local/script.c: Likewise. * mail.remote/testsuite/mail.remote/send.exp: Broke long lines. Added testsute framework for mail.local: * mail.local/Makefile.am: Added SUBDIRS. * mail.local/testsuite: New directory * mail.local/testsuite/Makefile.am: New file * mail.local/testsuite/.cvsignore: New file * mail.local/testsuite/Data: New file * mail.local/testsuite/lib: New directory * mail.local/testsuite/lib/mail.local.exp: New file * mail.local/testsuite/lib/DISTFILES: New file * mail.local/testsuite/mail.local: New directory * mail.local/testsuite/mail.local/deliver.exp: New file * mail.local/testsuite/mail.local/DISTFILES: New file 2002-11-04 Sergey Poznyakoff * examples/mta.c: include <mailutils/argp.h> * mailbox/getline.c: include <unistd.h> (for ssize_t) * mh/mh_fmtgram.y (cond production): added missing semicolon, required by modern yaccs. * sieve/sieve-gram.y (sizetag production): Likewise. 2002-11-03 Sergey Poznyakoff * configure.ac: Added testsuite for mail.remote * examples/mta.c: New file. A "fake" MTA for testing "mail" and "mail.remote" * examples/Makefile.am: Added mta.c * examples/.cvsignore: Likewise. * testsuite/etc/mail.rc: Added indentprefix. * mail/testsuite/mail/send.exp: New file. Test sending commands. * mail/testsuite/mail/DISTFILES: Added send.exp * mail/testsuite/Makefile.am: Add top_builddir to site.exp * mail.remote/testsuite: New directory. * mail.remote/Makefile.am: Added testsuite * mail.remote/testsuite/Makefile.am: New file. * mail.remote/testsuite/.cvsignore: New file. * mail.remote/testsuite/Data: New file. Data for testing mail.remote. * mail.remote/testsuite/lib: New direcory * mail.remote/testsuite/lib/mail.remote.exp: New file. * mail.remote/testsuite/lib/DISTFILES: New file. * mail.remote/testsuite/mail.remote: New directory * mail.remote/testsuite/mail.remote/send.exp: New file. * mail.remote/testsuite/mail.remote/DISTFILES: New file. * mail.local/main.c: Fixed indentation. * mailbox/smtp.c: Likewise. (smtp_address_add): New function. A wrapper around address_union. (_smtp_set_rcpt): Rewritten based on address_union call. * mail.remote/Makefile.am: Renamed some variables to avoid name clashes. * mh/Makefile.am: Likewise. * mailbox/file_stream.c: Some applications (e.g. mail.remote) implicitly rely on the possibility to seek on stdin streams. To provide this functionality: (struct _file_stram): Added cache member. It is a memory stream used to provide seeking capability for stdio streams. (_file_destroy): Destroy cache if necessary. (_stdin_file_read,_stdin_file_readline,_stdout_file_write): New functions. Provide IO operations for stdio streams. (stdio_stream_create): Register new IO functions. * testsuite/lib/mailutils.exp (mu_test_file): Minor fixes. 2002-11-01 Jeff Bailey <jbailey@gnu.org> * mh/Makefile.am: Use MHPROGRAMS and MHLIBRARIES instead of MH_PROGRAMS and MH_LIBRARIES so that automake doesn't complain. * mail.remote/Makefile.am: Use SMTPPROGRAMS instead of SMTP_PROGRAMS so that automake doesn't complain. * configure.ac: Adjust for above changes. * mh/Makefile.am: Use AM_YFLAGS instead of YFLAGS. * libmu_scm/Makefile.am: Use AM_CPPFLAGS instead of CPPFLAGS * autogen.sh: Redo using 'autoreconf'. This is now the right tool to use for generating the build environment. * Makefile.am: Require version 1.7.1, add std-options to AUTOMAKE_OPTIONS * configure.in: Require version 2.54. Update quoting. Change AC_ARG_WITH and AC_ARG_ENABLE to use AC_HELP_STRING * m4/enable.m4: Change AC_ARG_ENABLE to use AC_HELP_STRING * lib/Makefile.am: Remove ansi2knr * lib/ansi2knr.c: Remove * lib/ansi2knr.1: Remove 2002-11-01 Sergey Poznyakoff * m4/enable.m4: Fixed action-if-false. * Makefile.am: Restored to pre-2002-10-29 state. * configure.ac: Substitute MH_PROGRAMS, MH_LIBRARIES and SMTP_PROGRAMS variables. * mh/Makefile.am: Build the targets conditionally. * mail.remote/Makefile.am: Likewise. 2002-10-29 Sergey Poznyakoff Following the proposition of Olivier Bornet <Olivier.Bornet@smartdata.ch>, added a possibility to disable the support for certain protocols. * m4/enable.m4: New file. Implements MU_ENABLE_SUPPORT defun. * m4/Makefile.am: Added enable.m4 * configure.ac: New switches --disable-pop, --disable-imap --disable-mh, --disable-smtp and --disable-sendmail allow to disable corresponding protocols. * Makefile.am: Conditionally build directories depending on protocols that may be disabled. * mailbox/mu_argp.c: Updated to reflect the set of ENABLE_ defines. * mailbox/folder_imap.c: Conditionally compile the contents. * mailbox/folder_mh.c: Likewise. * mailbox/folder_pop.c: Likewise. * mailbox/mbx_imap.c: Likewise. * mailbox/mbx_mh.c: Likewise. * mailbox/mbx_pop.c: Likewise. * mailbox/sendmail.c: Likewise. * mailbox/smtp.c: Likewise. * mailbox/url_imap.c: Likewise. * mailbox/url_mh.c: Likewise. * mailbox/url_pop.c: Likewise. * mailbox/url_sendmail.c: Likewise. * mailbox/url_smtp.c: Likewise. * sieve/sieve.c: Option -M none disables creating the mailer. * sieve/testsuite/lib/sieve.exp: Start sieve with "-M none". Bugfixes to the docs, contributed by Olivier Bornet: * doc/texinfo/mailbox.texi: Documented the return code. * doc/texinfo/headers.texi: Fixed names of the macro- definitions. 2002-10-15 Sergey Poznyakoff * guimb/scm/README: Updated. * mailbox/parse822.c (parse822_phrase): Allow for dots in non-quoted personal phrase. * mailbox/testsuite/Addrs: New test: parse non-quoted phrase containing dots. 2002-10-14 Alain Magloire * mailbox/getline.c: New LGPL implementation, With a patch for Sergey. * mailbox/getline.h: New LGPL implementation. 2002-10-14 Sergey Poznyakoff * configure.ac: Provide GUILE_BINDIR variable for Makefiles. * guimb/scm/Makefile.am: Likewise. * guimb/scm/reject.scm: Fixed Reporting-UA line. * guimb/scm/sieve-core.scm: Allow to be executed directly by guile. * guimb/scm/sieve.scm.in: Cleaned up the source. * libmu_scm/Makefile.am: Use install-data-hook to create the libguile-mailutils symlink. * libmu_scm/mu_scm.c (mu-path-maildir, mu-path-folder-dir): New globals. * libmu_scm/mailutils.scm.in: Export new globals. 2002-10-13 Sergey Poznyakoff * guimb/scm/sieve-core.scm: Changed sieve-register-.* functions to allow for actions to accept tags. (sieve-get-opt-arg): New function. Returns the argument to a given tag. * guimb/scm/sieve.scm.in: Use new sieve-register style. (sieve-preprocess-arguments): New function. Preprocess and group arguments into optional and positional types. (sieve-parse-arguments): New function. Parses arguments to an action or a test. (sieve-register-action,sieve-register-test): Rewritten. * guimb/scm/mimeheader.scm: Updated to use new register style * guimb/scm/numaddr.scm: Likewise. * guimb/scm/redirect.scm: Likewise. * guimb/scm/reject.scm: Likewise. * guimb/scm/vacation.scm: New file. Implements "vacation" extension. * guimb/scm/Makefile.am: Added vacation.scm * libmu_scm/mu_message.c (mu_message_set_header): Bugfix. * libmu_scm/mu_scm.c (_mu_scm_package_string, in scheme mu-package-string): New global. * mail/eq.c: Allow a single argument as an extension to the standard '=' command. The effect is to move the current pointer to the given message. * mail/util.c (util_error_range): New function. Outputs "message out of range" diagnostics. (util_get_message): New function. A wrapper around mailbox_get_message with the proper diagnostics. * mail/mail.h: Likewise. * mail/copy.c: Use util_get_message() * mail/delete.c: Likewise. * mail/followup.c: Likewise. * mail/from.c: Likewise. * mail/hold.c: Likewise. * mail/mbox.c: Likewise. * mail/pipe.c: Likewise. * mail/print.c: Likewise. * mail/quit.c: Likewise. * mail/reply.c: Likewise. * mail/size.c: Likewise. * mail/top.c: Likewise. * mail/undelete.c: Likewise. * mail/var.c: Likewise. * mail/write.c: Likewise. * mail/decode.c: Updated util_isdeleted() invocation. * mail.local/Makefile.am: Added /mailbox to INCLUDES * lib/getline.h: Removed. * mailbox/Makefile.am: Added /mailbox to INCLUDES 2002-10-02 Sergey Poznyakoff * configure.ac: Check if environ is declared. * mail/setenv.c: Protect the declaration of environ by #if. * mail/send.c (mail_send): Set save_to right after entering the function. (mail_send0): deduce savefile basing on the localpart of the first address (when save_to is set). Expand aliases in every address-related header. * mail/alias.c (alias_expand): Return NULL if no suitable expansion was found. * mail/followup.c: Removed unneded typecasts. * mail/mailline.c: Likewise. * mail/shell.c: Likewise. * mail/util.c (util_header_expand): New function. Expand the address-related fields of a header. * mail/mail.h: Likewise. * mail.local/mail.local.h: Added missing includes. * pop3d/popauth.c: Likewise. 2002-10-02 Sergey Poznyakoff * mailbox/address.c (_address_get_nth): Get nth sub-address from an address. (most of the functions): Rewritten using _address_get_nth (address_aget_personal, address_aget_comments): new functions. (address_dup): New function. Create a copy of a (single) address. (address_contains_email): New function. Check if the given email is contained in the address. (address_union): New function. Create a union of two addresses. * include/mailutils/address.h (address_contains_email, address_union): new functions. * mail/setenv.c: New file. Implements `setenv' command: an extension allowing to manipulate the shell environment. * mail/table.c: Added setenv command. * mail/Makefile.am: Added setenv.c * mail/decode.c: Use util_get_crt() to check the value of the crt variable. * mail/print.c: Likewise. * mail/mail.h (mail_setenv, util_get_crt, util_merge_addresses): New functions. * mail/reply.c (mail_reply): Bugfix. * mail/send.c (compose_header_set): COMPOSE_SINGLE_LINE part rewritten. * mail/util.c (util_get_crt): Return the value of the "crt" variable. The variable may be either boolean or numeric, meaning the minimum number of lines the body of the message must contain in order to be put through the pager. (util_merge_addresses): Add new address to the comma-separated address list, unless it is already present there. * mail/var.c (dump_headers): Do not print extra newline after the headers. * doc/texinfo/programs.texi: Documented crt variable and setenv command. 2002-10-01 Sergey Poznyakoff * guimb/scm/sieve-core.scm: Added :regex tag -- an extension allowing to use posix regexp in address and header tests. * mh/repl.c: New file. A framework for the `repl' program. * mh/Makefile.am: Added repl * mh/.cvsignore: Likewise. 2002-09-30 Sergey Poznyakoff * configure.ac: Changed check for CURSES_LIBS * mh/Makefile.am (scan_LDADD): Use CURSES_LIBS instead of directly linking -lcurses 2002-09-27 Sergey Poznyakoff * mh/mh_format.c (strobj_len,print_string): Extra safety not to dereference NULL pointer. (_parse_date): Use local time if the date cannot be parsed. * mh/refile.c: Implemented --draft and --file switches. 2002-09-27 Sergey Poznyakoff * mail/file.c: Fixed typo. * mh/folder.c (main): Correctly set current message number. * mh/inc.c: Do not use current_folder global. * mh/mh.h (mh_msgset_reverse,mh_msgset_negate,mh_msgset_current, mh_msgset_free): new functions. (mh_context_get_value,mh_msgset_parse): Changed. * mh/mh_ctx.c: Descriptive comment regarding the allocation of the return values. * mh/mh_msgset.c (mh_msgset_reverse,mh_msgset_negate, mh_msgset_current, mh_msgset_free): new functions. Added comments. * mh/mhpath.c: Minor fixes. * mh/refile.c: Use new mh_msgset_parse() syntax. * mh/rmm.c: Fixed args_doc string. Use new mh_msgset_parse() syntax. * mh/scan.c: Use mh_iterate(). Accept message specifications from the command line. * mh/mh_format.c (mh_format_dump): Bugfix: missed break; 2002-09-26 Sergey Poznyakoff * mail/mail.h (struct compose_env): Changed structure. Renamed to compose_env_t. (compose_init, compose_header_set, compose_header_get, compose_destroy): New functions. * mail/send.c: Likewise. Use new compose functions. * mail/followup.c: Use new compose functions. * mail/reply.c: Likewise. * mail/util.c (util_msglist_esccmd): Declaration updated. * mail/var.c: Implemented "editheaders" variable. * doc/texinfo/programs.texi: Documented "editheaders" variable. * mh/Makefile.am (install-exec-hook): Remove "folders" before linking "folder" to it. 2002-09-25 Sergey Poznyakoff * mailbox/mutil.c: Fixed typo in #if directive. * mailbox/parse822.c (const char *days): Bugfix. "Sun" must be the first entry in the array. * mh/fmtcheck.c: New file. Source for fmtcheck command. It is planned as a replacement for fmtdump, providing a broader set of options for debugging user formats. Currently only dump (listing) mode is implemented. * mh/mh_format.c (mh_format_dump): New function. Produces the listing of compiled format code. (builtin_me, builtin_profile, builtin_putstr, print_string, builtin_putnum, builtin_putnumf, builtin_tws, builtin_pretty): Implemented. (builtin_pers): Enclose the return in a pair of double-quotes. * mh/mh_init.c (mh_my_email): New function. * mh/mh.h (mh_format_dump, mh_my_email): New function. * mh/Makefile.am: Added fmtcheck 2002-09-24 Sergey Poznyakoff * mail/mail.c (mail_cmdline): removed unnecesary conditional. * mail/send.c (mail_send0): Bugfix. A dot ends the message only if it is the only character on the line. Thanks to Thomas Esser <te@dbs.uni-hannover.de> for noticing. * mail/util.c (util_save_outgoing): Removed extra newline at the end of the envelope `from' line. * mh/folder.c: Fixed scanning of folders and output. * mh/mh.h: Changed mh_opcode_t type. * mh/mh_fmtgram.y: Stricter typing of productions. The cntl production allows for empty lists (e.g. %<{reply-to}%?{from}%>). Enable debugging when MHFORMAT_DEBUG environment variable is set. (yylex): Skip whitespace after the function name. (branch_fixup): The produced jump offset was wrong. Fixed. (mh_code_builtin): Fixed passing of escape arguments. * mh/mh_format.c (strobj_is_null,strobj_realloc): New function. (print_string): Accept an explicit width argument. (print_obj): New function. (mh_format): Use the new functions. (builtin_lit): Fixed. (builtin_formataddr,builtin_putaddr): Implemented. 2002-09-22 Sergey Poznyakoff * mh/mh_argp.c (mh_argp_parse): Complain about non-processed arguments unless "index" is non-null. * mh/folder.c: Implemented -header. Several fixes. * mh/rmf.c: New file. Implements rmf command. * mh/Makefile.am: Added rmf. Added install hook to link 'folder' to 'folders' * mh/.cvsignore: Added rmf. 2002-09-21 Sergey Poznyakoff * mailbox/header.c (header_parse): Bugfix: do not bail out if len==0. * mailbox/mbx_mh.c (mh_append_message): Scan the mailbox if it has not been scanned yet. * mh/mh_global.c: New file. Global configuration functions. * mh/folder.c: New file. Implementation of the folder command. * mh/mh.h: New prototypes. * mh/inc.c (opt_handler): Use is_true(). * mh/refile.c: Likewise. * mh/mh_argp.c: Use new configuration functions. * mh/mh_init.c: Likewise. * mh/scan.c: Likewise. * mh/Makefile.am: Added folder.c and mh_global.c * mh/.cvsignore: Added folder. * frm/frm.c: Fixed indentation. 2002-09-19 Sergey Poznyakoff * mh/mhpath.c: New file. Source for mhpath command. * mh/Makefile.am: Added mhpath. * mh/.cvsignore: Likewise. * mh/mh_msgset.c (msgset_preproc): Expand the second part of the message spec as well (the one after dash). (mh_msgset_parse): Fill message set with message ordinal numbers. (mh_search_message): Binary search for a message with the given sequence number. (mh_get_message): Retrieve the message with the given sequence number. * mh/mh.h (mh_get_message): New prototype. * mh/mh_init.c (mh_iterate): Rewritten to expect msgset to contain message ordinal numbers. 2002-09-19 Sergey Poznyakoff * mailbox/mbx_mh.c (_mh_message_save): Take into account trailing newline returned by envelope_date (should it be returned, by the by?) Output a newline to separate the headers from the body. (mh_envelope_date): Make sure the returned value is terminated with a '\n' character (if the buffer space permits). * mh/inc.c (main): Use mh_open_folder. * mh/mh.h (mh_init2, mh_is_my_name, mh_iterate): Added prototypes. (mh_open_folder, mh_expand_name): Changed prototypes. * mh/mh_init.c (mh_init2): Fixed generation of the sequence file name. (mh_open_folder): Take an extra argument: a flag specifying whether the folder should be created. (mh_expand_name): Changed return data type. * mh/mh_msgset.c (mh_msgset_parse): Sort the message set and remove any duplicates from it. * mh/refile.c: Initial implementation. * mh/rmm.c: Updated mh_open_folder invocations. * mh/scan.c: Likewise. * mh/.cvsignore: Updated. 2002-09-18 Sergey Poznyakoff * mailbox/mailbox.c: Include message.h * mailbox/mbx_default.c (mu_path_folder_dir): New global. Holds the name of the user's folder directory. * include/mailutils/mailbox.h: Likewise * mailbox/mbx_mh.c: Preserve the envelope information in the message header. * libmu_scm/mu_guimb.c (_scheme_main): Removed unused variable. * mh/mh_ctx.c: New file. Context-related functions. * mh/mh_msgset.c: New file. Mh-specific message sets. * mh/refile.c: New file. The framework for the refile command. * mh/Makefile.am: Added new programs. * mh/mh.h (mh_builtin_fp, mh_msgset_t): New types. Added new prototypes. * mh/mh_argp.c (struct mh_argp_data): New member `doc'. Keeps the documentation string. (parse_opt): Pass the data->doc member to mh_getopt. (mh_argp_parse): Initialize data.doc. * mh/mh_getopt.c (mh_getopt, mh_help): Accept new argument: a pointer to the doc string. * mh/mh_getopt.h: Likewise. * mh/mh_init.c: Changed handling of MH profiles. (mh_open_folder, mh_get_dir, mh_expand_name, mh_iterate): New functions * mh/rmm.c: Use new mh functions. * mh/scan.c: Likewise. 2002-09-17 Sergey Poznyakoff * m4/gssapi.m4: Removed unused variable * mh/rmm.c: New file. Source for rmm program. * mh/Makefile.am: Added rmm.c * mh/mh.h (mh_open_folder): new function. * mh/mh_init.c: Split mh_init() in two. The second part, mh_init2(), gets called after parsing the arguments. (mh_open_folder): New function. Open current folder. * mh/mh_format.c (mh_format): Bugfix (NULL pointer dereference). * mh/mh_argp.c (mh_argp_parse): Increased number of arguments. The last argument points to a location where to store the ordinal number of the first non-option argument (can be NULL). Call mh_init2() after parsing. * mh/mh_getopt.h (mh_argp_parse): Updated declaration. * mh/inc.c (main): Updated invocation of mh_argp_parse. * mh/scan.c: Likewise. 2002-09-12 Sergey Poznyakoff In order to make libmailutils self-contained, shuffled several files from lib/ to mailutils/. Added standalone guile module. * m4/mu_libobj.m4: New file. mu-specific version of AC_LIBOBJS. * m4/Makefile.am: Added mu_libobj.m4 * configure.ac: Use MU_LIBOBJS on functions needed for libmailbox. Add mailutils.scm to GUILE_PKGDATA. * libmu_scm/Makefile.am: Install libmu_scm. Added new rule for building guile standalone mailutils module -- mailutils.scm * libmu_scm/.cvsignore: Updated. * libmu_scm/mu_scm.c (mu-register-format): New primitive. Registers desired mailbox/mailer formats. (mu_scm_init): Unconditionally register path_record format. * libmu_scm/mailutils.scm.in: Source for mailutils.scm -- a module interface file for mailutils. * libmu_scm/.cvsignore: Updated * guimb/Makefile.am: Load libmu_scm.la * lib/Makefile.am: Removed argp-related stuff. * lib/strndup.c: Moved to mailbox/ * lib/strtok_r.c: Likewise. * lib/strnlen.c: Likewise. * lib/getline.c: Likewise. * lib/strchrnul.c: Likewise. * lib/argp-ba.c: Likewise. * lib/argp-eexst.c: Likewise. * lib/argp-fmtstream.c: Likewise. * lib/argp-fs-xinl.c: Likewise. * lib/argp-help.c: Likewise. * lib/argp-parse.c: Likewise. * lib/argp-pv.c: Likewise. * lib/argp-pvh.c: Likewise. * lib/argp-xinl.c: Likewise. * lib/argcv.c: Likewise. * lib/argp-fmtstream.h: Likewise. * lib/argp-namefrob.h: Likewise. * lib/getopt.h: Likewise. * mailbox/Makefile.am: Added argp-related stuff. * mailbox/strndup.c: Moved from lib/ * mailbox/strtok_r.c: Likewise. * mailbox/strnlen.c: Likewise. * mailbox/getline.c: Likewise. * mailbox/strchrnul.c: Likewise. * mailbox/argp-ba.c: Likewise. * mailbox/argp-eexst.c: Likewise. * mailbox/argp-fmtstream.c: Likewise. * mailbox/argp-fs-xinl.c: Likewise. * mailbox/argp-help.c: Likewise. * mailbox/argp-parse.c: Likewise. * mailbox/argp-pv.c: Likewise. * mailbox/argp-pvh.c: Likewise. * mailbox/argp-xinl.c: Likewise. * mailbox/argcv.c: Likewise. * mailbox/argp-fmtstream.h: Likewise. * mailbox/argp-namefrob.h: Likewise. * mailbox/getopt.h: Likewise. * include/mailutils/gnu/: New directory. Holds GNU headers that might be missing on the system, but are necessary for mailutils. * include/mailutils/Makefile.am: Added gnu to SUBDIRS. * include/mailutils/gnu/Makefile.am: New file. * include/mailutils/gnu/.cvsignore: New file. * lib/argp.h: Moved to ... * include/mailutils/gnu/argp.h: ... here * lib/argcv.h: Moved to ... * include/mailutils/argcv.h: ... here * include/mailutils/argp.h: Conditionally include <gnu/argp.h> * mailbox/mu_argp.c: Changed licence to Lesser GPL * mailbox/mu_auth.c: Likewise. * mailbox/system.c: Likewise. * auth/pam.c: Likewise * auth/sql.c: Likewise * auth/virtual.c: Likewise * comsat/cfg.c: Removed include <argcv.h> * comsat/comsat.h: Include mailutils/argcv.h * sieve/sieve.c: Likewise. * imap4d/fetch.c: Likewise. * mail/mail.h: Likewise. * mailbox/argcv.c: Likewise. * mh/mh_argp.c: Likewise. * dotlock/dotlock.c: Include mailutils/argp.h * mh/mh_getopt.h: Likewise. * mailbox/Makefile.am: Fixed INCLUDES * mh/mh.h: Removed include <argp.h> * mh/mh_error.c: Likewise. * mailbox/mu_argp.c: Removed include <xalloc.h> 2002-09-10 Sergey Poznyakoff Added support for Guile 1.6.0: * configure.ac: Changed check for guile. Raised patchlevel to 0.1.1 * m4/guile.m4: New file. Check for guile presence and usability. Determine its version. * m4/Makefile.am: Add guile.m4 * scripts/Makefile.am: Updated * scripts/guile-1.4: New directory. Contains scripts for use with guile 1.4.x * scripts/guile-1.6: New directory. Contains scripts for use with guile 1.6 and hopefully higher. * scripts/guile-1.4/Makefile.am: New file. * scripts/guile-doc-snarf: Moved to ... * scripts/guile-1.4/guile-doc-snarf: ... here * scripts/guile-func-name-check: Moved to ... * scripts/guile-1.4/guile-func-name-check: ... here * scripts/guile-snarf.awk: Moved to ... * scripts/guile-1.4/guile-snarf.awk: ... here * scripts/guile-1.6/Makefile.am: New file. * scripts/guile-1.6/guile-doc-snarf: New file. * scripts/guile-1.6/guile-doc-snarf.awk: New file. * guimb/Makefile.am: Added @GUILE_INCLUDES@ and @GUILE_LIBS@. * libmu_scm/Makefile.am: Added @GUILE_INCLUDES@. Changed snarfing rules. * mail.local/Makefile.am: Added @GUILE_INCLUDES@ and @GUILE_LIBS@. * guimb/scm/sieve.scm.in: string->obarray-symbol is deprecated in 1.6.0. Use another approach. * libmu_scm/mu_address.c: Upgrade to guile 1.6.0 * libmu_scm/mu_body.c: Likewise. * libmu_scm/mu_guimb.c: Likewise. * libmu_scm/mu_logger.c: Likewise. * libmu_scm/mu_mailbox.c: Likewise. * libmu_scm/mu_message.c: Likewise. * libmu_scm/mu_scm.c: Likewise. * libmu_scm/mu_scm.h: Likewise. * auth/sql.c (mu_sql_authenticate): Removed unused variable. 2002-09-05 Sergey Poznyakoff * mailbox/mbx_mh.c: Rewritten to use MH sequence numbers as UIDs. This allows to simplify the code and to get rid of mh_message_number(), which didn't fit well in the mailutils framework. * mh/mh.h: Changed type of `prog' to mh_instr_t, which is a union of all objects that can be held in a program text cell. This fixes potential problems due to sizeof(int)!= sizeof(void*). * mh/mh_fmtgram.y: Likewise. * mh/mh_format.c: Likewise. * mh/mh_init.c (mh_message_number): A wrapper around message_get_uid call. Returns the sequence number of the message. 2002-09-04 Sergey Poznyakoff * README: Verbose description of --with-mail-spool configuration option. Spell-checked the file. * examples/http.c: New file. Example of stream functions. * examples/Makefile.am: Added http.c * doc/texinfo/Makefile.am: Added http.c.texi. * doc/texinfo/.cvsignore: Likewise. * doc/texinfo/stream.texi: Include http.c.texi. 2002-09-03 Sergey Poznyakoff * mailbox/md5-rsa.c: Removed. * mailbox/md5-rsa.h: Removed. * mailbox/md5.c: Introduced instead. * mailbox/md5.h: Likewise. * mailbox/Makefile.am: Use md5.[ch] * mailbox/message.c: Likewise. * mailbox/mbx_pop.c: Likewise. (pop_get_message): Bugfix: check that the message number be not out of range. * doc/texinfo/framework.texi: Included parse822 as extra node. 2002-09-03 Sergey Poznyakoff * configure.ac: Bumped version number to 0.1 * Makefile.am: Added copyleft header. Removed README-alpha from EXTRA_DIST and added it to AUTOMAKE_OPTIONS. Removed incomplete mh. * auth/Makefile.am: Added copyleft header. * comsat/Makefile.am: Likewise * doc/Makefile.am: Likewise * doc/man/Makefile.am: Likewise * doc/rfc/Makefile.am: Likewise * doc/texinfo/Makefile.am: Likewise * dotlock/Makefile.am: Likewise * examples/Makefile.am: Likewise * frm/Makefile.am: Likewise * frm/testsuite/Makefile.am: Likewise * from/Makefile.am: Likewise * from/testsuite/Makefile.am: Likewise * guimb/Makefile.am: Likewise * guimb/scm/Makefile.am: Likewise * imap4d/Makefile.am: Likewise * imap4d/testsuite/Makefile.am: Likewise * include/Makefile.am: Likewise * include/mailutils/Makefile.am: Likewise * lib/Makefile.am: Likewise * lib/posix/Makefile.am: Likewise * libmu_scm/Makefile.am: Likewise * m4/Makefile.am: Likewise * mail/Makefile.am: Likewise * mail/testsuite/Makefile.am: Likewise * mail.local/Makefile.am: Likewise * mail.remote/Makefile.am: Likewise * mailbox/Makefile.am: Likewise * mailbox/include/Makefile.am: Likewise * mailbox/testsuite/Makefile.am: Likewise * mapi/Makefile.am: Likewise * messages/Makefile.am: Likewise * messages/testsuite/Makefile.am: Likewise * mh/Makefile.am: Likewise * pop3d/Makefile.am: Likewise * pop3d/testsuite/Makefile.am: Likewise * readmsg/Makefile.am: Likewise * readmsg/testsuite/Makefile.am: Likewise * scripts/Makefile.am: Likewise * sieve/testsuite/Makefile.am: Likewise * testsuite/Makefile.am: Likewise * doc/texinfo/mailutils.texi: Commented out inclusion of c-api.texi * examples/url-parse.c: Indent output with explicit \t. * mailbox/testsuite/Urls: Add comment regarding the use of tabs. * sieve/md5-rsa.h: Removed. * sieve/md5-rsa.c: Removed. * sieve/Makefile.am: Added copyleft header. Removed RSA-copyrighted code, use lib/md5 instead. * sieve/script.c: Use FSF md5 functions. 2002-09-02 Sergey Poznyakoff * NEWS: Updated. * README: Updated. * TODO: Updated. * doc/texinfo/mailer.texi: Removed confusing note: yes, one always has to give -t to sendmail to force it to get recepient addresses from the headers. * doc/texinfo/mailutils.texi: Commented out references to mailbox2 stuff. * examples/addr.c: Untabified. Needed for proper conversion to *.texi * examples/mimetest.c: Likewise. * examples/msg-send.c: Likewise. * examples/muemail.c: Likewise. * examples/sfrom.c: Likewise. * examples/url-parse.c: Likewise. 2002-09-02 Sergey Poznyakoff * comsat/comsat.c: Removed erroneous redeclaration of getutent. * doc/texinfo/c-api.texi: Removed reference to non-implemented NNTP. * doc/texinfo/programs.texi: Documented sieve. * guimb/scm/sieve.scm: Removed. * guimb/scm/sieve.scm.in: Added to the repository. * guimb/scm/Makefile.am: Make sieve.scm from sieve.scm.in * guimb/scm/.cvsignore: Added sieve.scm * guimb/scm/sieve-core.scm (sieve-expand-filename): Fixed syntax error. * mailbox/mutil.c (mu_tempname): New function. Creates a unique temporary file name in tmpdir. * include/mailutils/mutil.h: Likewise. * mail/edit.c: Use mu_tempname * mail/visual.c: Likewise. * examples/mimetest.c: Likewise. * testsuite/lib/mailutils.exp: Couple of fixes. * sieve/testsuite/sieve/DISTFILES: Temporarly removed compile.exp: it uses files not included in the distribution. 2002-08-29 Sergey Poznyakoff * Makefile.am: Added examples/ to SUBDIRS. * configure.ac: Build mailbox/testsuite/Makefile and examples/Makefile * doc/texinfo/Makefile.am: Rules to generate examples .texi from sources in ../examples. * doc/texinfo/address.texi: include address.c.texi * doc/texinfo/url.texi: include url-parse.c.texi * doc/texinfo/ex-address.texi: Removed. Auto-generated file. * doc/texinfo/ex-url.texi: Likewise. * doc/texinfo/sfrom.c.texi: Likewise. * doc/texinfo/.cvsignore: Added autogenerated files. * examples/Makefile: Removed. * examples/Addrs: Removed. Incorporated into mailbox/testsuite. * examples/Addrs.good: Likewise. * examples/Urls: Likewise. * examples/Urls.good: Likewise. * examples/mail.MysqlMailer.c: Removed obsolete file. mail.local provides the same functionality. * examples/mbox-check.c: Removed. * examples/mbox-dates.c: Removed. * examples/mbox-explode.c: Removed. * examples/Makefile.am: New file. * examples/sfrom.c: New file. * examples/addr.c: Added copyleft header. Set user email domain to localhost on startup. * examples/mimetest.c: Added copyleft header. Changed output format to better suit testing. * examples/msg-send.c: Added copyleft header. Reindented. * examples/muemail.c: Likewise. * examples/url-parse.c: Likewise. * guimb/scm/sieve-core.scm (sieve-expand-filename): Do not attempt to expand meta-characters understood by mailbox_create_default. * lib/argp-help.c: Define __P() if necessary. * mail/copy.c (mail_copy0): Make sure we really got the message. * mail/next.c (mail_next): Do not allow the cursor to grow past total number of messages. * mailbox/locker.c: Provide definition for MAXHOSTNAMELEN, if necessary. * testsuite/lib/mailutils.exp (mu_version): Check if MU_CAPABILITY exists. One never knows... (mu_command): Additional diagnostics (mu_expect_list,mu_test): Commented out extra checks. * mailbox/Makefile.am: Added testsuite * mailbox/testsuite: New directory. * mailbox/testsuite/Makefile.am: New file. * mailbox/testsuite/.cvsignore: New file. * mailbox/testsuite/Addrs: New file. * mailbox/testsuite/Mime: New file. * mailbox/testsuite/Urls: New file. * mailbox/testsuite/lib: New directory. * mailbox/testsuite/lib/DISTFILES: New file. * mailbox/testsuite/lib/mailbox.exp: New file. * mailbox/testsuite/mailbox: New directory. * mailbox/testsuite/mailbox/DISTFILES: New file. * mailbox/testsuite/mailbox/address.exp: New file. * mailbox/testsuite/mailbox/mime.exp: New file. * mailbox/testsuite/mailbox/url.exp: New file. 2002-08-28 Sergey Poznyakoff * sieve/interp.c (sieve_interp_alloc): Fill allocalted memory with zeroes. * sieve/svcb.c: Implemented envelope test (see comment, though) * sieve/sieve-gram.y: Include "sieve.h" * sieve/sieve-lex.l: Handle C-style comments. * sieve/sieve.c: Handle --license option. Additional debugging flags: 'a' to produce address parser traces, 'g' to produce main parser traces. * sieve/sieve_interface.h (addrdebug, yydebug): external declarations. * include/mailutils/argp.h (mu_license_text): External declaration. * mailbox/mu_argp.c (mu_license_text): removed static qualifier. * configure.ac: Added testsuite for sieve. Changed version number to 0.0.9e. * sieve/Makefile.am: Likewise * sieve/testsuite: New directory. * sieve/testsuite/Makefile.am: New file. * sieve/testsuite/.cvsignore: New file. * sieve/testsuite/lib: New directory. * sieve/testsuite/lib/DISTFILES: New file. * sieve/testsuite/lib/sieve.exp: New file. * sieve/testsuite/scripts: New directory. * sieve/testsuite/scripts/DISTFILES: New file. * sieve/testsuite/scripts/addr_is_all.sv: New file. * sieve/testsuite/scripts/addr_is_domain.sv: New file. * sieve/testsuite/scripts/addr_is_local.sv: New file. * sieve/testsuite/scripts/addr_matches.sv: New file. * sieve/testsuite/scripts/address.sv: New file. * sieve/testsuite/scripts/allof00.sv: New file. * sieve/testsuite/scripts/allof01.sv: New file. * sieve/testsuite/scripts/allof11.sv: New file. * sieve/testsuite/scripts/anyof00.sv: New file. * sieve/testsuite/scripts/anyof01.sv: New file. * sieve/testsuite/scripts/anyof11.sv: New file. * sieve/testsuite/scripts/discard.sv: New file. * sieve/testsuite/scripts/envelope1.sv: New file. * sieve/testsuite/scripts/exists1.sv: New file. * sieve/testsuite/scripts/exists2.sv: New file. * sieve/testsuite/scripts/exists3.sv: New file. * sieve/testsuite/scripts/false.sv: New file. * sieve/testsuite/scripts/fileinto.sv: New file. * sieve/testsuite/scripts/header1.sv: New file. * sieve/testsuite/scripts/header2.sv: New file. * sieve/testsuite/scripts/header3.sv: New file. * sieve/testsuite/scripts/keep.sv: New file. * sieve/testsuite/scripts/not.sv: New file. * sieve/testsuite/scripts/null.sv: New file. * sieve/testsuite/scripts/size1.sv: New file. * sieve/testsuite/scripts/size2.sv: New file. * sieve/testsuite/scripts/stop.sv: New file. * sieve/testsuite/scripts/true.sv: New file. * sieve/testsuite/sieve: New directory. * sieve/testsuite/sieve/DISTFILES: New file. * sieve/testsuite/sieve/action.exp: New file. * sieve/testsuite/sieve/address.exp: New file. * sieve/testsuite/sieve/allof.exp: New file. * sieve/testsuite/sieve/anyof.exp: New file. * sieve/testsuite/sieve/compile.exp: New file. * sieve/testsuite/sieve/envelope.exp: New file. * sieve/testsuite/sieve/exists.exp: New file. * sieve/testsuite/sieve/false.exp: New file. * sieve/testsuite/sieve/header.exp: New file. * sieve/testsuite/sieve/not.exp: New file. * sieve/testsuite/sieve/size.exp: New file. * sieve/testsuite/sieve/true.exp: New file. * testsuite/lib/mailutils.exp (mu_exec): added -arg-list option. * testsuite/spool/sieve.mbox: New file. Mailbox for testing sieve. * testsuite/spool/DISTFILES: Added sieve.mbox * imap4d/testsuite/imap4d/list.exp: Updated to match new spooldir contents. 2002-08-27 Sergey Poznyakoff * frm/frm.c: Fixed return status when the mailbox does not exist. * frm/Makefile.am: Added testsuite * frm/testsuite: new directory. * frm/testsuite/Makefile.am: new file. * frm/testsuite/.cvsignore: new file. * frm/testsuite/frm: new directory. * frm/testsuite/frm/DISTFILES: new file. * frm/testsuite/frm/test.exp: new file. * from/Makefile.am: Added testsuite * from/testsuite: new directory. * from/testsuite/Makefile.am: new file. * from/testsuite/.cvsignore: new file. * from/testsuite/from: new directory. * from/testsuite/from/DISTFILES: new file. * from/testsuite/from/test.exp: new file. * messages/messages.c: Added "mailbox" command line capability. * messages/Makefile.am: Added testsuite * messages/testsuite: new directory. * messages/testsuite/Makefile.am: new file. * messages/testsuite/.cvsignore: new file. * messages/testsuite/messages: new directory. * messages/testsuite/messages/DISTFILES: new file. * messages/testsuite/messages/test.exp: new file. * readmsg/readmsg.h: Added include <mailutils/url.h> * readmsg/readmsg.c (struct argp_option options): Fixed definition of -a option. (print_header): Last header was never seen. * readmsg/Makefile.am: Added testsuite * readmsg/testsuite: new directory. * readmsg/testsuite/Makefile.am * readmsg/testsuite/.cvsignore: new file. * readmsg/testsuite/readmsg: new directory. * readmsg/testsuite/readmsg/DISTFILES: new file. * readmsg/testsuite/readmsg/test.exp: new file. * imap4d/testsuite/config/unix.exp: Renamed to ... * imap4d/testsuite/config/default.exp: ... this * imap4d/testsuite/config/DISTFILES: Likewise. * mail/testsuite/config/unix.exp: Renamed to ... * mail/testsuite/config/default.exp: ... this * mail/testsuite/config/DISTFILES: Likewise. * pop3d/testsuite/config/unix.exp: Renamed to ... * pop3d/testsuite/config/default.exp: ... this * pop3d/testsuite/config/DISTFILES: Likewise. * configure.ac: Added new testsuites. * testsuite/lib/mailutils.exp (mu_start): Modified. 2002-08-26 Sergey Poznyakoff * frm/frm.c: Don't bail out if the mailbox does not exist. * imap4d/append.c (imap4d_append0): Skip leading whitespace. * imap4d/fetch.c (fetch_envelope0): Emit whitespace before "from" header. * imap4d/util.c: Fixed typo in comment. * imap4d/testsuite/imap4d/append.exp: New file * imap4d/testsuite/imap4d/create.exp: New file * imap4d/testsuite/imap4d/expunge.exp: New file * imap4d/testsuite/imap4d/examine.exp: Replaced [imap4d_uidvalidity] with simple regexp. * imap4d/testsuite/imap4d/fetch.exp: Likewise. * imap4d/testsuite/lib/imap4d.exp (imap4d_test): Added new options: -long to emit long IMAP4D literal after the command, -silent to be silent about the results of the testcase. * imap4d/testsuite/imap4d/DISTFILES: Added new files. * testsuite/lib/mailutils.exp (mu_expect_list): New procedure 2002-08-23 Sergey Poznyakoff * configure.ac: Added check for socklen_t. * imap4d/commands.c: Fixed allowed states for X-VERSION command. * imap4d/fetch.c (fetch_operation) Fix section specification output. * mail/testsuite/mail/folder.exp: Enabled "folders" test. * imap4d/testsuite/imap4d/examine.exp: Moved get_uidvalidity to imap4d.exp and renamed it to imap4d_uidvalidity. * imap4d/testsuite/lib/imap4d.exp: Likewise (imap4d_test): Added new switches: -literal and -noliteral * imap4d/testsuite/imap4d/fetch.exp: New file * imap4d/testsuite/imap4d/x.exp: New file * imap4d/testsuite/imap4d/DISTFILES: Added fetch.exp, x.exp * imap4d/testsuite/imap4d/search.exp: Added comments * testsuite/spool/mbox: Changed `organisation' header * testsuite/spool/mbox1: Likewise. * mail/testsuite/mail/write.exp: Adjusted tests to the changes in mbox and mbox1. * libmu_scm/mu_address.c (mu_address_get_count): Fixed type of `count' variable * mailbox/list.c (list_remove): Removed cast from void* to int, it does not work on 64-bit machines. Besides, pointer comparison is strictly defined by C. * mailbox/observer.c (observable_detach): Likewise. * mailbox/tcp.c (_tcp_open): Changed type of `namelen' to socklen_t. * mh/mh_format.c: Changed type of `len' to size_t. * mail/folders.c (mail_folders): Protect directory name with quotes. 2002-08-23 Sergey Poznyakoff * testsuite/lib/mailutils.exp: Introduced -re flag to handle a pattern as a regular expression, and -- flag to escape exact strings that actually happen to start with "-re". * imap4d/testsuite/lib/imap4d.exp: Properly handle --re and -- flags. * imap4d/testsuite/imap4d/examine.exp: Use -re to check uidvalidity value, as we can never be sure the seconds don't change between computing the uidvalidity value and running the test. 2002-08-23 Sergey Poznyakoff * configure.ac: Check if crypt is declared. * auth/sql.c: Include <crypt.h> when available * imap4d/imap4d.h: Include <url.h> * imap4d/util.c: Descriptive comment on util_uidvalididty. * lib/mu_asprintf.c: Removed. * lib/mu_asprintf.h: Provide declarations for (v)asprintf. * lib/Makefile.am: Removed mu_asprintf.c * mailbox/mu_argp.c: Do not use asprintf. * mailbox/mutil.c: Do not use asprintf. * mailbox/parse822.c (parse822_time): Tolerate unknown timezone abbreviations. * mailbox/system.c: Include <crypt.h> when available * imap4d/testsuite/imap4d/search.exp: New file. Provides tests for SEARCH command. * imap4d/testsuite/imap4d/DISTFILES: Added search.exp * testsuite/spool/teaparty.mbox: Fixed timestamps. * pop3d/testsuite/pop3d/read.exp: Updated to match new mailbox. * mail/testsuite/mail/z.exp: Likewise. * mail/testsuite/mail/tag.exp: Likewise. 2002-08-22 Sergey Poznyakoff * configure.ac: Create imap4d/testsuite/Makefile * imap4d/Makefile.am: Added testsuite * imap4d/testsuite: Added to repository * imap4d/testsuite/Makefile.am: Likewise. * imap4d/testsuite/config: Likewise. * imap4d/testsuite/config/DISTFILES: Likewise. * imap4d/testsuite/config/unix.exp: Likewise. * imap4d/testsuite/lib: Likewise. * imap4d/testsuite/lib/DISTFILES: Likewise. * imap4d/testsuite/lib/imap4d.exp: Likewise. * imap4d/testsuite/imap4d: Likewise. * imap4d/testsuite/imap4d/DISTFILES: Likewise. * imap4d/testsuite/imap4d/anystate.exp: Likewise. * imap4d/testsuite/imap4d/examine.exp: Likewise. * imap4d/testsuite/imap4d/list.exp: Likewise. * imap4d/util.c (util_uidvalidity): New function. A wrapper around mailbox_uidvalidity. When a mailbox is selected whose first message does not keep X-UIDVALIDITY value, the uidvalidity is computed based on the return of time(). Now, if we call "EXAMINE mailbox" or "STATUS mailbox (UIDVALIDITY)" the same mailbox is opened second time and the uidvalidity recalculated. Thus each subsequent call to EXAMINE or STATUS upon an already selected mailbox will return different uidvalidity value. To avoid this, util_uidvalidity() first sees if it is asked to operate upon an already opened mailbox and if so, returns previously computed value. * imap4d/imap4d.h (util_uidvalidity): New function * imap4d/select.c (imap4d_select_status): Use util_uidvalidity. * imap4d/status.c (status_uidvalidity): Likewise. * imap4d/list.c (imap4d_list): Added comment describing when INBOX should be output. * frm/frm.c: Fixed coredump when MAIL environment variable has an empty value. * mailbox/mutil.c (mu_tilde_expansion): Bugfix. Was freeing passed homedir, which caused grief later. 2002-08-21 Jeff Bailey <jbailey@outpost.dnsalias.org> * README: Make this a bit more current. 2002-08-21 Sergey Poznyakoff Added pop3d testsuite. * testsuite/makespool: New option -subst: sets sed command to be used. * testsuite/etc/passwd.in: New file. Template for etc/passwd for testing pop3d and imap4d. * testsuite/etc/DISTFILES: Added passwd.in * testsuite/lib/mailutils.exp (mu_init,mu_version): Modified. * configure.ac: Added pop3d/testsuite/Makefile * pop3d/Makefile.am: Likewise. * pop3d/testsuite: Added to repository * pop3d/testsuite/Makefile.am: Likewise. * pop3d/testsuite/config: Likewise. * pop3d/testsuite/config/DISTFILES: Likewise. * pop3d/testsuite/config/unix.exp: Likewise. * pop3d/testsuite/lib: Likewise. * pop3d/testsuite/lib/DISTFILES: Likewise. * pop3d/testsuite/lib/pop3d.exp: Likewise. * pop3d/testsuite/pop3d: Likewise. * pop3d/testsuite/pop3d/DISTFILES: Likewise. * pop3d/testsuite/pop3d/read.exp: Likewise. * mail/testsuite/lib/mail.exp: Updated * mailbox/mu_argp.c: New hidden option --show-config-options. Displays a list of configuration defines from config.h 2002-08-20 Sergey Poznyakoff * Makefile.am: Added testsuite subdirectory * configure.ac: Likewise. * auth/virtual.c: A couple of bugfixes. Introduced --virtual-passwd-dir switch to override the default placement of virtual domain password files. * testsuite: New dir. Common files for all testsuites. * testsuite/lib: New dir. * testsuite/lib/mailutils.exp: New file. Common test driver. * mail/testsuite/spool: Moved to ... * testsuite/spool: ... here * mail/testsuite/folder: Moved to ... * testsuite/folder: ... here * mail/testsuite/etc: Moved to ... * testsuite/etc: ... here * mail/testsuite/Makefile.am: Removed etc, spool and folder test dirs. * mail/testsuite/lib/mail.exp: Updated. * mail/testsuite/mail/folder.exp: Updated. * mail/testsuite/mail/write.exp: Updated. 2002-08-15 Sergey Poznyakoff * configure.ac: If -lcrypt is present, add it to LIBS not to AUTHLIBS. * auth/system.c: Moved to ... * mailbox/system.c: ... here. * auth/Makefile.am: Moved system.c to * mailbox/Makefile.am: ... here. * mailbox/mu_auth.c: Provide "generic:system" as default. * mailbox/sendmail.c (sendmail_send_message): Bugfix. In spite of what the comment said, -t option is not implicit and must be specified. * mail/from.c: Bugfix: display even messages without Subject: or From: headers. * mail/reply.c: Fixed improper use of header_aget_value(). * mail/util.c (util_do_command): For compatibility with older mails treat a number alone on the line as "print NUMBER". 2002-08-14 Sergey Poznyakoff * auth/virtual.c: Removed vestiges of mu_virtual_domain. * doc/texinfo/programs.texi: Documented authentication concepts and related command line options. * mail/testsuite/makespool: Added GNU copyleft header. 2002-08-13 Sergey Poznyakoff * pop3d/apop.c: Switched to the new authentication/authorization functions. 2002-08-13 Sergey Poznyakoff To avoid confusion, pruned libmailbox directory. * libmailbox/mailbox.c: Removed obsolete files. * libmailbox/maildir.c: Likewise. * libmailbox/mh.c: Likewise. * libmailbox/unixmbox.c: Likewise. * libmailbox/Makefile.am: Likewise. * libmailbox/mailbox.h: Likewise. * libmailbox/maildir.h: Likewise. * libmailbox/mh.h: Likewise. * libmailbox/unixmbox.h: Likewise. * MySql/Makefile.am: Removed. * MySql/MySql.c: Likewise. * MySql/MySql.h: Likewise. * MySql/.cvsignore * auth/sql.c: Merged sql core stuff from MySql/MySql.c. * auth/virtual.c: All functions made static. * auth/system.c: Likewise. * Makefile.am: Removed MySql * configure.ac: Likewise. 2002-08-13 Sergey Poznyakoff Moved authentication specific calls scattered all over the code to one place: libmuauth library. The new code returns authorization credentials in struct mu_auth_data. It contains all information from struct passwd as well as some mailutils-specific information. New options `--authentication' and `--authorization' provide a way to override default settings. * configure.ac: Check for prototypes of strtok_r, strchrnul, strndup, asprintf, vasprintf. Create auth/Makefile * Makefile.am: Added auth to SUBDIRS. * MySql/Makefile.am: Added INCLUDES * MySql/MySql.c: Include <mailutils/error.h> * comsat/comsat.c: Switched to the new authentication/authorization functions. * guimb/scm/sieve-core.scm: Likewise. * imap4d/authenticate.c: Likewise. * imap4d/bye.c: Likewise. * imap4d/imap4d.c: Likewise. * imap4d/login.c: Likewise. * imap4d/namespace.c: Likewise. * imap4d/rename.c: Likewise. * pop3d/pop3d.c: Likewise. * pop3d/user.c: Likewise. * libmu_scm/mu_util.c: Likewise. * mail.local/main.c: Likewise. * mail.local/script.c: Likewise. * mailbox/mbx_default.c: Likewise. * mailbox/message.c: Likewise. * mailbox/wicket.c: Likewise. * mailbox/mu_argp.c: Removed pam- and sql-specific stuff * mailbox/mu_auth.c: New file. Basic authentication/authorization functions. * mailbox/Makefile.am: Added mu_auth.c * auth/: New directory. The libmuauth library. * auth/system.c: New file. System-specific (passwd/shadow) auth functions. * auth/pam.c: New file. PAM-specific auth functions. * auth/sql.c: New file. SQL-specific auth functions. * auth/virtual.c: New file. Virtual-domain-specific auth functions. * auth/Makefile.am: New file. * pop3d/virtual.c: Removed. * pop3d/Makefile.am: Removed virtual.c * include/mailutils/mu_auth.h: New file. Prototypes for mailutils authentication/authorization functions. * include/mailutils/Makefile.am: Added mu_auth.h. * include/mailutils/argp.h (mu_register_capa): New prototype. * include/mailutils/mutil.h (mu_register_getpwnam, mu_register_getpwuid,mu_getpwnam,mu_getpwuid, mu_virtual_domain): Removed. * mailbox/mutil.c: Likewise. * lib/argp-help.c: Provide declarations for strchrnul, strndup if necessary. * lib/mu_asprintf.c: Likewise for vasprintf,asprintf * imap4d/imap4d.h: Include <mailutils/mu_auth.h> * comsat/comsat.h: Likewise. * mail.local/mail.local.h: Likewise. * pop3d/pop3d.h: Likewise. * mailbox/smtp.c (message_has_bcc): Fixed inconsistency in passing arguments to header_get_value(). * mail/set.c (mail_set): Fixed inconsistency in passing arguments to strtoul(). * mail/util.c (util_get_homedir): Do not strdup return. mu_get_homedir() does it now. * mail/var.c (var_insert): Changed declaration to avoid `auth shadows parameter' warning. * mailbox/locker.c (_locker_lock_dotlock): Bugfix: do not leave temporary lock file in case of errors * mailbox/mailbox.c: Include <mailutils/attribute.h> * mh/mh_init.c: Free return value of mu_get_homedir(). 2002-08-08 Sergey Poznyakoff * .cvsignore: Updated * mail/testsuite/.cvsignore: Updated * mail/testsuite/lib/mail.exp (default_mail_test): Ignore trailing whitespace. * mail/testsuite/mail/alias.exp: Remove trailing whitespace from the patterns. * mail/testsuite/mail/read.exp: Likewise. * mail/testsuite/mail/tag.exp: Likewise. * mail/testsuite/mail/write.exp: Likewise. * mailbox/mu_argp.c: Initialize argp_program_bug_address. * comsat/comsat.c: Removed argp_program_bug_address. Use PACKAGE_STRING, provided by the new autoconf. * dotlock/dotlock.c: Likewise. * frm/frm.c: Likewise. * from/from.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.c: Likewise. * mail/mail.c: Likewise. * mail.local/main.c: Likewise. * mail.remote/mail.remote.c: Likewise. * messages/messages.c: Likewise. * mh/inc.c: Likewise. * mh/scan.c: Likewise. * sieve/sieve.c: Likewise. * pop3d/capa.c: Likewise. * pop3d/pop3d.c: Likewise. Imply debug mode if the input stream is connected to a tty. Don't try to switch to "mail" group id in debug mode. * pop3d/popauth.c: Parse arguments using mu_argp instead of getopt_long. * readmsg/readmsg.c: Likewise. 2002-08-07 Sergey Poznyakoff * mail/mail.h (struct mail_env_entry): Reorganized. Added type member and changed "value" to be a union. (environment functions): Changed prototypes. (util_folder_path): New prototype. * mail/util.c: Rewritten internal environment functions. Environment variables are now typed, so setting "set folder=1" won't cause coredumps anymore. The function util_getenv() is used to retrieve a variable of given data type. util_find_env() takes second argument specifying whether it should create a missing variable. This function is used only in util.c and var.c. * mail/set.c: Use util_setenv(). * mail/alt.c: Use util_getenv(). * mail/copy.c: Use util_getenv(). Honour outfolder variable, when set. * mail/decode.c: Use util_getenv(). * mail/delete.c: Likewise. * mail/file.c (mail_expand_name): Use util_getenv() and util_folder_path(). * mail/folders.c: Use util_getenv(). * mail/if.c: Likewise. * mail/mail.c: Likewise. Provide default for "regexp" internal variable. * mail/msgset.y: Likewise. * mail/pipe.c: Likewise. * mail/print.c: Likewise. * mail/quit.c: Likewise. * mail/send.c: Likewise. * mail/top.c: Likewise. * mail/var.c: Likewise. * mail/mailline.c: Likewise. * mail/write.c: Honour "outfolder" variable. If called without arguments, deduce output file name from the number of current message. * mail/testsuite/makespool: Bugfix. * mail/testsuite/lib/mail.exp (mail_start): New flag -reuse-spool. (default_mail_test): If command is empty do not send anything. (mail_test_file): New function. Test the contents of an arbitrary file. * mail/testsuite/mail/write.exp: New file. Tests for message saving and disposing commands: delete, mbox, [sS]ave, [wW]rite * mail/testsuite/mail/DISTFILES: Added write.exp 2002-08-06 Sergey Poznyakoff * Makefile.am: Removed distcheck kludge. Testsuite doesn't need it anymore. * mail/testsuite/makespool: New file. Prepares data for testsuite. * mail/testsuite/Makefile.am: Added EXTA_DIST and distclean-local * mail/testsuite/lib/mail.exp: Fixed paths. (mail_prepare_spools,mail_cleanup_spools): new procedures. * mail/testsuite/mail/folder.exp: Corrected paths. 2002-08-06 Sergey Poznyakoff * Makefile.am: Added distcheck rule needed for test suite. * configure.ac: Added missing AH_BOTTOM and descriptions to AC_DEFINEs. Replaced sr_STRUCT_TM.* with AC_CHECK_MEMBERS (no aggregate members, so it's safe here). * acconfig.h: Removed * doc/texinfo/Makefile.am: DISTCLEANFILES * lib/Makefile.am: Use LTLIBOBJS. * m4/tm_gmtoff.m4: Removed. * m4/tm_isdst.m4: Removed. * m4/tm_zone.m4: Removed. * m4/Makefile.am: Removed tm_ files. * mail/testsuite/Makefile.am: Fixed generation of site.exp. Added DISTCLEANFILES. * mailbox/mutil.c: Changed HAVE_TM_.* to HAVE_STRUCT_TM_.* * mailbox/parse822.c: Likewise. * mailbox2/mutil.c: Likewise. * mailbox2/parse822.c: Likewise. * mh/mh_format.c: Likewise. * imap4d/authenticate.c (imap4d_auth_capability): New function. * imap4d/imap4d.h: Likewise. * imap4d/capability.c (imap4d_capability): call imap4d_auth_capability() to output AUTH= capabilities. 2002-08-05 Jeff Bailey <jbailey@outpost.dnsalias.org> * lib/Makefile.am: Remove libtool hacks, automake now handles LIBOBJS correctly. * .cvsignore: Add autom4te.cache * configure.in: Rename to ... * configure.ac: ... this, and update to autoconf 2.5 * Makefile.am: Now requires Automake 1.6 * m4/malloc.m4: Update from gnulib * m4/realloc.m4: Update from gnulib * m4/regex.m4: Update from gnulib * m4/utmp.m4: Change LIBOBJS to use AC_LIBOBJ 2002-08-05 Sergey Poznyakoff * imap4d/version.c: New file. Support for X-VERSION command * imap4d/Makefile.am: Added version.c * imap4d/imap4d.c (main): Imply debug mode if the input stream is connected to a tty. Don't try to switch to "mail" group id in debug mode. (imap4d_mainloop): Do not reveal our version. One may issue X-VERSION command in authenticated state to get it. * imap4d/imap4d.h (imap4d_version): New function. * imap4d/list.c (imap4d_list): Remove state check. Bugfix: allow a meta-closure (*) in any position of the word. * imap4d/util.c (util_finish): Do not allow to switch to a higher state in case of command failure. (util_do_command): Run the command only if it is allowed in the current state. * imap4d/commands.c: Added entry for X-VERSION * imap4d/capability.c: Indicate X-VERSION capability. * imap4d/append.c: Remove state check. * imap4d/authenticate.c: Likewise. * imap4d/check.c: Likewise. * imap4d/close.c: Likewise. * imap4d/copy.c: Likewise. * imap4d/create.c: Likewise. * imap4d/delete.c: Likewise. * imap4d/examine.c: Likewise. * imap4d/expunge.c: Likewise. * imap4d/fetch.c: Likewise. * imap4d/login.c: Likewise. * imap4d/logout.c: Likewise. * imap4d/lsub.c: Likewise. * imap4d/namespace.c: Likewise. * imap4d/noop.c: Likewise. * imap4d/rename.c: Likewise. * imap4d/search.c: Likewise. * imap4d/select.c: Likewise. * imap4d/status.c: Likewise. * imap4d/store.c: Likewise. * imap4d/subscribe.c: Likewise. * imap4d/uid.c: Likewise. * imap4d/unsubscribe.c: Likewise. 2002-08-03 Sergey Poznyakoff Use of attributes made consistent throughout the package: * imap4d/fetch.c (fetch_flags0): Use util_print_flags. * imap4d/search.c (cond_keyword): Likewise for util_attribute_matches_flag. * imap4d/imap4d.h (util_print_flags,util_attribute_to_type, util_attribute_matches_flag): New prototypes. * imap4d/select.c (imap4d_select_status): Run imap4d_sync() to output EXISTS and RECENT untagged responses. * imap4d/store.c (get_attribute_type): Removed. util_attribute_to_type() does the job. (imap4d_store0): Use util_attribute_to_type(). * imap4d/sync.c: Output the actual number of recent messages. * imap4d/util.c: For consistency, reduced all operations with flags to manipulations with _imap4d_attrlist array RFC2060 states that \Seen flag means "Message has been read", so it should be mapped to our MU_ATTRIBUTE_READ. (util_print_flags, util_attribute_matches_flag): New functions. * include/mailutils/mutil.h (mu_register_getpwuid): Fixed proto. * mailbox/mutil.c: Likewise. * include/mailutils/attribute.h (MU_ATTRIBUTE_IS_UNSEEN, MU_ATTRIBUTE_IS_UNREAD): New macros. * mailbox/attribute.c (attribute_is_recent): Use MU_ATTRIBUTE_IS_UNSEEN. (attribute_set_flags): If the required bits are already set, do not modify anything (attribute_unset_flags): If the required bits are already cleared, do not modify anything * mailbox/mbx_mbox.c (mbox_messages_recent): use MU_ATTRIBUTE_IS_UNSEEN. (mbox_message_unseen): use MU_ATTRIBUTE_IS_UNREAD. * mailbox/mbx_mh.c (mh_messages_recent, mh_message_unseen): Likewise. * imap4d/bye.c (imap4d_bye0): Use mailbox_flush. * imap4d/close.c (imap4d_close): Likewise. * mail/quit.c (mail_mbox_close): Likewise. * pop3d/quit.c (pop3d_quit): Likewise. * include/mailutils/mailbox.h (mailbox_flush): New prototype. * mailbox/mailbox.c (mailbox_flush): New function. Marks all messages as seen and saves the attributes to the mailbox, optionally expunging it. * mailbox/folder_imap.c (imap_flags): Empty attribute list means MU_ATTRIBUTE_SEEN. * mailbox/mbx_imap.c (flags_to_string): Map \Seen to MU_ATTRIBUTE_READ. 2002-08-02 Sergey Poznyakoff * MySql/MySql.c (getMpwuid): Bugfix. It should take a pointer as its argument; * MySql/MySql.h: Likewise * imap4d/sync.c: Rearranged functions to let implicit prototyping work. * imap4d/fetch.c: include argcv.h (fetch_send_address): Added const specifier to the declaraton. 2002-08-01 Sergey Poznyakoff * imap4d/util.c (util_msgset): Some comments * mailbox/mu_argp.c (read_rc): Bugfix. linebuf must be freed no matter was the string accepted or not. * pop3d/pop3d.c (pop3d_argp_capa): Bugfix. Was missing "mailbox" capability. 2002-08-01 Sergey Poznyakoff * imap4d/util.c (util_msgset): Bugfix. * imap4d/sync.c (notify_deleted): Implemented "immediate decrement rule" required by RFC2060 Interchanged reset_uid() and notify(). Notify decides whether and when reset_uid must be called. (notify): Call reset_uid(). when necessary. (reset_uid): Do not call notify(). (imap4d_sync): Call notify(). * imap4d/imap4d.h (fetch_flags0): New prototype. * imap4d/fetch.c (fetch_flags0): New function. Produces untagged fetch response for FETCH and STORE commands. If necessary outputs also UID. * imap4d/store.c (imap4d_store0): Use fetch_flags0. 2002-07-27 Sergey Poznyakoff * imap4d/fetch.c: Do not use strtok_r to parse header values (it ignores the quotes). *Lots* of bugfixes beside that. * imap4d/util.c (util_msgset): Always return sorted msgset with no duplicates. Fixed transcript support. * THANKS: Added Jordy Mallach 2002-07-26 Sergey Poznyakoff Provide session transcript support for the daemons. The transcript is triggered by --transcript option to the daemon. Its output goes to LOG_FACILITY.debug. Fixed a couple of bugs in imap4d (Thanks, Jordy!) * include/mailutils/argp.h (struct daemon_param): New member `transcript'. * mailbox/mu_argp.c (daemon option group): New option --transcript. * imap4d/util.c: Provide session transcript support. * imap4d/fetch.c (bodystructure,send_parameter_list): Fixed possible NULL dereference. * imap4d/imap4d.c (struct daemon_param): Initialize typescript member. * imap4d/login.c: Changed PAM error handling. * imap4d/signal.c: Handle SIGPIPE separately. Many clients seem to not wait for a response to LOGOUT command. * pop3d/extra.c (pop3d_outf): New function. Provides output functionality with session transcript support. (pop3d_readline): Support for session transcript. * pop3d/pop3d.h (pop3d_outf): New prototype. * pop3d/apop.c: Use pop3d_outf instead of fprintf * pop3d/capa.c: Likewise. * pop3d/dele.c: Likewise. * pop3d/list.c: Likewise. * pop3d/noop.c: Likewise. * pop3d/quit.c: Likewise. * pop3d/retr.c: Likewise. * pop3d/rset.c: Likewise. * pop3d/stat.c: Likewise. * pop3d/top.c: Likewise. * pop3d/uidl.c: Likewise. * pop3d/user.c: Likewise. (pop3d_user): Removed unneded PAM_ERROR. * pop3d/pop3d.c: Likewise. (struct daemon_param): Initialize transcript member. 2002-07-23 Sergey Poznyakoff * imap4d/imap4d.c (imap4d_parse_opt): Fixed dereference of child_inputs. Thanks to Jordi Mallach. * pop3d/pop3d.c (pop3d_parse_opt): Likewise. (pop3d_argp_capa): Reordered capabilities to match those of imap4d. * comsat/comsat.c (comsatd_parse_opt): Likewise. header_aget_value was modified on May 9 but its invocations throughout the code were not examined. Here goes the fix: * imap4d/fetch.c: Properly check the return from headers_aget_value. * mail/followup.c: Likewise. * mail/reply.c: Likewise. 2002-07-22 Sergey Poznyakoff * mail/delete.c (mail_delete): Initialize auto variables. * mail/testsuite/mail/tag.exp: Test "tag" command and message selection. * mail/testsuite/mail/z.exp: Test "z" command. * mail/testsuite/mail/DISTFILES: Added tag.exp, z.exp * mail/testsuite/spool/teaparty.mbox: A mailbox for tag.exp and z.exp. * mail/testsuite/spool/DISTFILES: Added teaparty.mbox * mail/testsuite/etc/mail.rc: Set screen and columns. 2002-07-17 Sergey Poznyakoff * mail/quit.c (mail_mbox_commit): Do not store deleted messages into mbox (Thanks Matthew Whitworth). 2002-07-16 Sergey Poznyakoff Based on ideas of Matthew Whitworth, moved mailbox file expansion into a separate function: * mail/file.c (mail_expand_name): New function. Expands mail special characters in a filename. * mail/mail.h: Likewise. * mail/copy.c (mail_copy0): Use mail_expand_name(). * mail/quit.c (mail_mbox_commit): Fixed typo. (mail_mbox_close): Do not expunge mailboxes if readonly is set. Helps in testing mail. * mail/alt.c: Use mu_errstring() where appropriate. * mail/testsuite/mail/folder.exp: (new file) A regression test for folder and file commands. * mail/testsuite/mail/DISTFILES: Added folder.exp * mail/testsuite/folder: (new dir) Data for folder.exp test. * mail/testsuite/folder/DISTFILES: New file * mail/testsuite/folder/one: New file * mail/testsuite/folder/two: New file * mail/testsuite/Makefile.am: Added folder. * mail/testsuite/lib/mail.exp: Set MBOX variable. * mail/testsuite/mail/read.exp: Force readonly mode before proceeding. * mail/testsuite/spool/mbox: (new) * mail/testsuite/spool/DISTFILES: Added mbox * THANKS: Added Matthew Whitworth 2002-07-15 Sergey Poznyakoff * mail/folders.c (mail_folders): If the value of "folder" variable does not start with '/' or '~', assume it is relative to the user's homedir. * mail/file.c (mail_file): Likewise. Thanks to Matthew Whitworth <matthew@okcomputer.org> for reporting. 2002-07-13 Sergey Poznyakoff * mailbox/mbx_default.c (mailbox_create_default): If the mailbox name does not start with a '/' and does not contain a protocol specification, assume it is a file name relative to the cwd and convert it to the absolute file name. * mail/size.c: Do not move the cursor after running the command. * mail/testsuite/lib/mail.exp: Expect the prompt to appear after the last pattern. * mail/testsuite/mail/read.exp: Added tests for size and decode commands. * mail/testsuite/spool/mbox1: Added two MIME messages. 2002-07-03 Sergey Poznyakoff * mail/testsuite/lib/mail.exp: Be more stringent in testing. * mail/testsuite/mail/read.exp: Added tests for Print, top, ignore and retain commands. 2002-07-02 Sergey Poznyakoff * mail/mail.c (mail_capa): Added "mailbox" capability. Added framework for dejagnu testsuite. * configure.in: Call AC_CANONICAL_SYSTEM. Create mail/testsuite/Makefile * mail/Makefile.am: Added testsuite to SUBDIRS. * mail/testsuite: New dir. * mail/testsuite/Makefile.am: new file. * mail/testsuite/.cvsignore: new file. * mail/testsuite/config: New dir. * mail/testsuite/config/DISTFILES: new file. * mail/testsuite/config/unix.exp: Configuration file for Unix. * mail/testsuite/etc: New dir. * mail/testsuite/etc/DISTFILES: new file. * mail/testsuite/etc/mail.rc: site-specific config for testing mail. * mail/testsuite/lib: New dir. * mail/testsuite/lib/DISTFILES: new file. * mail/testsuite/lib/mail.exp: Dejagnu entry points for testing mail. * mail/testsuite/mail: New dir. * mail/testsuite/mail/DISTFILES: new file. * mail/testsuite/mail/alias.exp: Test alias/unalias commands * mail/testsuite/mail/read.exp: Test mail reading commands * mail/testsuite/spool: New dir. * mail/testsuite/spool/DISTFILES: new file. * mail/testsuite/spool/mbox1: A mailbox for testing. 2002-06-29 Sergey Poznyakoff * mail/headers.c: Fix divide by zero (noted by Matthew Whitworth). 2002-06-27 Sergey Poznyakoff * libmu_scm/mu_message.c (mu_message_set_header_fields): Bugfix. * imap4d/login.c (imap4d_login): Removed FIXME note: the user need not have a homedir at all. * mail.local/main.c (make_progfile_name): moved to ... * mailbox/mutil.c (mu_expand_path_pattern): ... there. * mail.local/mail.local.h (make_progfile_name): Removed prototype. * include/mailutils/mutil.h (mu_expand_path_pattern): new prototype. * mail.local/script.c (mda_init,mda_next): use mu_expand_path_pattern. 2002-05-24 Walter J. Mack <wmack@componentsw.com> * include/mailutils/types.h: Include definition for __PMT * include/mailutils/list.h: use __PMT in typedef * include/mailutils/registrar.h: change all callback function specs from __P to __PMT * include/mailutils/filter.h: Likewise. * include/mailutils/envelope.h: Add coditional closing bracket to balance earlier extern "C" { 2002-05-16 Sergey Poznyakoff * guimb/scm/sieve-core.scm (sieve-expand-filename): New function. Expands ~ in the given pathname, using geteuid. (action-fileinto): Use sieve-expand-filename. Be more robust in error handling. * libmu_scm/mu_util.c: Interfaces to functions from mutil.c * libmu_scm/mu_scm.h (mu_scm_mutil_init): Prototype. * libmu_scm/mu_scm.c (mu_scm_init): Init mu_util.c. * libmu_scm/Makefile.am: Added mu_util.c. * mail.local/mail.local.h (switch_user_id): prototype. * mail.local/script.c (mda_catch_body): Switch to the user's uid and change to his homedir before running his filtering script. Switch back to root before running mda(). 2002-05-14 Sergey Poznyakoff * mail.remote/Makefile.am: Removed reference to non-existent mail.remote.h 2002-05-13 Sam Roberts * comsat/comsat.h, frm/frm.c, from/from.c, guimb/main.c, imap4d/imap4d.h, include/mailutils/Makefile.am, include/mailutils/argp.h, include/mailutils/mailutils.h, include/mailutils/mu_argp.h, mail/mail.h, mail.local/mail.local.h, messages/messages.c, pop3d/pop3d.h, sieve/sieve.c: Removed redundant mu_ prefix from mailutils/mu_argp.h. * TODO: Updated. * Makefile.am, mail.remote/.cvsignore, mail.remote/mail.remote.c, configure.in: mail.remote now working as an SMTP forwarder. * include/mailutils/: mu_features.h, types.h: Merged mu_features.h into types.h. * mailbox/mu_argp.c: Added :mailer group, with option --mailer,-M to set the default mailer URL. * mailbox/smtp.c: Now clearing Bcc: even when there is an explicit TO argument. Not the best thing to do, but it seems to be What Everybody Does. * doc/texinfo/mailer.texi: Updated now that smtp mailer is working. * mailbox/sendmail.c: Looking at other utilities makes me think that providing -t to sendmail is optional, need to test this. * mailbox/parse822.c: Updated TODO list and ran through GNU indent. * include/mailutils/errno.h, mailbox/muerrno.c: An unsupported mailer URL now gives a more specific error than EINVAL. * mail/mailline.c: Silenced warnings that can appear depending on the presence of readline, and various terminal APIs. * include/mailutils/mailer.h, mailbox/mailer.c, mailbox/include/mailer0.h: mailer_get|set_url_default() new functions to set the default mailer * lib/mu_asprintf.h: Removed dependency on mailutils. 2002-05-13 Sergey Poznyakoff To avoid dependency problems moved mu_argp.c to mailbox. Changed license to Lesser GPL. * lib/mu_argp.h: Moved to ... * include/mailutils/mu_argp.h: here. * lib/mu_argp.c: Moved to ... * mailbox/mu_argp.c: here. * lib/Makefile.am: Removed mu_argp.* stuff. * mailbox/Makefile.am: Added mu_argp.c * include/mailutils/Makefile.am: Added mu_argp.h * comsat/comsat.h: Changed mu_argp.h to mailutils/mu_argp.h * frm/frm.c: Likewise. * from/from.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.h: Likewise. * imap4d/search.c: Likewise. * mail/mail.h: Likewise. * mail.local/mail.local.h: Likewise. * messages/messages.c: Likewise. * pop3d/pop3d.h: Likewise. * sieve/sieve.c: Likewise. * lib/utmp.c: Added missing includes. 2002-05-12 Sam Roberts * doc/xml2texi.rb: Converts doxygen XML output to texinfo function documentation. 2002-05-10 Sam Roberts * mailbox/tcp.c: Not a good day, second typo in a row in tcp_stream_create. * include/mailutils/errno.h, mailbox/muerrno.c, mailbox/tcp.c: tcp_stream_create now has more informative errors for no host or port * from/from.c: From now uses mu_argp, and has a debug flag. * mailbox/tcp.c: The arg check I added was checking floating data instead of actual args, serious error, fixed. * examples/: Addrs, Addrs.good, Makefile, mbox-check.c, mbox-dates.c, mbox-explode.c, mimetest.c, msg-send.c: Tweaked header files to build without errors. * examples/muemail.c: Test program for current email address completion configuration. * mailbox/parse822.c: Group names no longer appearing in address lists (still parsed correctly). 2002-05-08 Sam Roberts * mailbox/: smtp.c, include/mailer0.h: Implemented correct semantics for sending mail to bcc'ed addresses. * include/mailutils/mailer.h, mailbox/mailer.c: mailer_check_to(): ensures that there all the to addresses are qualified. mailer_check_from(): ensures that there is only one address, and it is qualified. * include/mailutils/header.h, mailbox/header.c: header_parse(): wasn't ignoring LWSP after "bcc : ...", fixed. header_set_value(): header_set_value(): there was no way to remove a field, now calling set with a field value of NULL removes the field. header_get_value(): was concatenating the values of all the fields with the same name, now it doesn't. header_get_address(): convenience function to get an address_t from a header field. header.h: sorted API functions to top of header, and ones used in implementing header_t to the bottom. * include/mailutils/address.h, mailbox/address.c: address_concatenate() - appends one address list to another address_get_group_count() - the number of groups in an address_t address_get_unix_mailbox_count() - the number of unix mailboxes.. * include/mailutils/mutil.h, mailbox/mutil.c: mu_get_host_name(): returns this host name, looking gethostname() up with gethostbyname() if possible. mu_get_user_email_domain() and family now use mu_get_host_name() * mailbox/parse822.c: address parsing now creates email addresses for unqualified "unix" style mailboxes by using the mu_get_user_email_domain(). * include/mailutils/message.h, mailbox/message.c: message_create_copy(): creates a copy of a message, useful when you want to operate on a temporary copy of a message. * mailbox/mbx_imap.c: Moved message copy code into message_create_copy(). * mailbox/tcp.c: Attempting to connect to port 0 is now an error, and resolver failures cause MU_ERR_GETHOSTBYNAME instead of the less-than-useful EINVAL. * include/mailutils/errno.h, mailbox/muerrno.c: Added smtp and mailer return codes. * mailbox/url_smtp.c: _url_smtp_init(): using url_parse(), now accepts host AND port as args * include/mailutils/url.h, mailbox/url.c: url_is_scheme(url_t, const char*): new function 2002-05-02 Sergey Poznyakoff * comsat/comsat.c: Provide extern declarations for *utent calls. * lib/utmp.c: (new) Replacements for {set,get,end}utent calls. * lib/Makefile.am: Added utmp.c * m4/utmp.m4: (new) Detect presense of utmp.h and {set,get,end}utent calls. * m4/Makefile.am: Added utmp.m4 * configure.in: Call MU_CHECK_UTMP. * readmsg/msglist.c: Renamed isnumber to is_number. Apparently, OS X defines a macro with this name. * libmu_scm/mu_address.c (_get_address_part): Bugfix. Was passing too short a length to fun(). * guimb/scm/numaddr.scm: Changed runtime error reporting. * guimb/scm/redirect.scm: Likewise. Initialize sender variable. * guimb/scm/sieve-core.scm: Provide new runtime-message function. * imap4d/select.c (imap4d_select0): Removed unused variable. * mail.local/mail.local.h: Changed mda() declaration. * mail.local/main.c: Likewise. * mail.local/script.c (mda_catch_body): Check if the message is to be delivered here, instead of doing it in deliver(). If the message was modified, drop it to the separate temporary file first, so that all modifications get to the user's maildrop. 2002-04-26 Sam Roberts * include/mailutils/mutil.h: Included <mailutils/types.h>, which will get <sys/types.h> & uid_t. * lib/argp-help.c, messages/messages.c: Made inclusions of <malloc.h> conditional on autoconf check. 2002-04-19 Sergey Poznyakoff * guimb/scm/sieve.scm (sieve-parse-command): Bugfix: must always return a list whose car is the token type. New command line options: --debug and --lib-dir * guimb/scm/mimeheader.scm: (new) Implements "mimeheader" extension test. The test is similar to "header" but works on multipart MIME messages also. * guimb/scm/Makefile.am: Added mimeheader.scm * libmu_scm/mu_message.c: New interfaces: mu-message-multipart?, mu-message-get-num-parts, mu-message-get-part * libmu_scm/mu_port.c (mu_port_mark): Do nothing if the port is not in open state. 2002-04-15 Sam Roberts * doc/texinfo/programs.texi, include/mailutils/mutil.h, lib/mu_argp.c, mailbox/mutil.c: mu_get_user_email() assumed we could deliver to the current host, on dialup systems, and workstations this may not be true, so allow user names to be qualified with the domain that should be used for email mu_set_user_email() - email address to use for NULL (current) user mu_set_user_email_domain() - domain to use to qualify an @-less username mu_get_user_email() - now uses default address and domain, if set -E,--email-addr - config option, calls mu_set_user_email() -D,--email-domain - config option, calls mu_set_user_email_domain() :address - group for the above config options * lib/Makefile.am, lib/mu_asprintf.c, lib/mu_asprintf.h, mailbox/Makefile.am: One way to get rid of the annoying warnings about asprintf() not being declared is to always call a mailutils wrapper function, which in turn calls the real function. That means the wrappers (and other functions in lib) will still compile with warnings, but the mailbox and utility code can compile clean. * doc/texinfo/programs.texi: Updated to match lib/mu_argp.c. 2002-04-15 Sergey Poznyakoff * acconfig.h: Added placeholders for PROGRAM_INVOCATION_NAME_DECLARED and HAVE_PROGRAM_INVOCATION_NAME. (@BOTTOM@): Provide external declarations for program_invocation_.*name if necessary. * configure.in: Check if program_invocation_.*name are declared and/or defined. * lib/Makefile.am: Always compile pin.c * lib/pin.c: include <config.h> * mh/mh.h: Added missing includes. Removed external declaration of program_invocation_short_name. * mh/mh_argp.c (mh_argp_parse): Removed local declarations of program_invocation_.* variables. * mh/mh_getopt.c: Removed include <mh.h> * mh/mh_init.c: Added include <stdarg.h> * libmu_scm/mu_scm.h: include <mailutils/url.h> 2002-04-15 Sergey Poznyakoff * imap4d/namespace.c (namespace_getfullpath): Translate INBOX to the corresponding filename. * imap4d/copy.c (imap4d_copy0): Removed unnecessary code: namespace_getfullpath() now translates INBOX to filename. * imap4d/select.c: Likewise. * imap4d/status.c: Likewise. 2002-04-14 Sam Roberts * include/mailutils/mutil.h, mailbox/locker.c, mailbox/mutil.c: Implemented symlink unrolling before locking. * lib/mu_argp.c: Config files in ~/ all start with .mu again. 2002-04-12 Jeff Bailey <jbailey@outpost.dnsalias.org> * configure.in: Bump version to 0.0.9d 2002-04-11 Sergey Poznyakoff * lib/mu_argp.c: Fixed auto-arranging of options groups. Fixed spelling of license option. * comsat/comsat.c: Fixed spelling of "license" option. * frm/frm.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.c: Likewise. * mail/mail.c: "mailutils" capability does not exist any more. Changed to "common", "license". * messages/messages.c: Likewise. * pop3d/pop3d.c: Likewise. * mail.local/main.c: Added "license" capability. 2002-04-10 Sam Roberts * mail.local/main.c: split mailutils capabilities * frm/frm.c: mailutils capabilities were split, and it now reports failure, rather than calling failure seccess. * comsat/comsat.c, guimb/main.c, imap4d/imap4d.c: mailutils capbilities were split up * mail.remote/: Makefile.am, mail.remote.c: A stub mail.remote. It is waiting on completion of the smtp mailer_t. * lib/mu_argp.c: Default per-utility config files are ~/.programrc. If you want to segregate you mailutils configuration, make ~/.mailutils a directory, and put your config files in it (same name, minus the leading "."). Also organized all common options under the heading "Common options", moved the daemon and auth options before the common options, and implemented a --lock-flags option. * include/mailutils/locker.h, mailbox/locker.c: (locker_set_default_flags) new function to set the default locking flags Fixed bug wherein lock count wasn't incremented for external locking. Fixed bug wherein the right flags wasn't checked during union init. 2002-04-10 Sergey Poznyakoff * imap4d/list.c: Removed imap_match(). * imap4d/util.c (util_wcard_match): from list.c * imap4d/imap4d.h: Proto for util_wcard_match() and defines for its return values. * imap4d/lsub.c: Output only those list items that match given wildcard expression. * mailbox/mutil.c (mu_register_retriever): Register a retrieving function. (mu_retrieve): Retrieve information using stack of retriever functions. (mu_getpwnam,mu_register_getpwnam): Rewritten using retriever functions. (mu_getpwuid,mu_register_getpwuid): Likewise. * include/mailutils/mutil.h: Prototypes for general-purpose retrieval functions. 2002-04-08 Sergey Poznyakoff * include/mailutils/locker.h (MU_LOCKER_KERNEL): New locker type: implies kernel-locking. * mailbox/locker.c: Reorganized. Default locking type is DOTLOCK. If the mailbox to be locked is not writable for the user, locking type changes to NULL (no locking at all). If the directory where the mailbox resides is not writable, the locking type switches to KERNEL. * m4/gssapi.m4: Fixed typo. 2002-04-04 Sergey Poznyakoff * imap4d/lsub.c (imap4d_lsub): Return OK response, unless something grave has happened. 2002-03-28 Sergey Poznyakoff Several bugfixes: 1. mail -f~user/path coredumps 2. mail --mail-spool [other than mbox URL]://hostname did not work (same for frm and others). 3. mail --mail-spool imap://hostname did not work (at least with our imap4d). * imap4d/list.c (print_dir): Enclose empty filename in doublequotes. * mailbox/folder_imap.c (imap_string): Return 1 if the input is not a quoted string. (imap_list): Ignore NIL delimiters, correctly handle strings, not enclosed in doublequotes. * mailbox/mbx_default.c (user_mailbox_name): Operate only on mbox: and path URLs. * guimb/main.c (main): initialize c. 2002-03-28 Sergey Poznyakoff * lib/mu_argp.c: Renamed --maildir to --mail-spool. * doc/texinfo/programs.texi: Documented --mail-spool option. * configure.in: Renamed --with-maildir to --with-mail-spool for symmetry. * mail/mail.c: Some measures to help avoid the confusion about --file option: (Help output): Print additional note about --file taking optional argument. (parse_opt): Try to figure out if argument to -f was separated by a whitespace. If so, print a warning and switch to mail-reading mode. Hopefully this will help avoid the confusion. (main): Print more detailed diagnostics if mailbox_scan failed. * include/mailutils/errno.h: New error code MU_ERR_NO_SUCH_USER * mailbox/muerrno.c: Likewise. * mailbox/mbx_default.c (split_shortcut): Properly handle "~/" filenames. (tilde_expand): Return MU_ERR_NO_SUCH_USER if an invalid username was specified. 2002-03-25 Sergey Poznyakoff Was too quick about _exit :^) * configure.in: Check for _exit. * mailbox/mutil.c (mu_spawnvp): Protected _exit by #ifdef. 2002-03-25 Sergey Poznyakoff Bunch of fixes: Use of ~/.<program>rc caused problems with mail utility, whose native profile is ~/.mailrc: * lib/mu_argp.c: Renamed program-specific profiles to ~/.mu.<program>rc. * doc/texinfo/programs.texi: Documented use of ~/.mu.<program>rc * libmu_scm/mu_scm.h: Added some includes, needed after yesterday's modifications. * mailbox/locker.c: include <sys/wait.h> * mailbox/mutil.c: _exit is not portable. * mailbox2/include/mailutils/types.h: (new) * mailbox2/include/mailutils/Makefile.am: Added types.h * mailbox2/debug.c: Include <mailutils/debug.h> * mailbox2/include/mailutils/address.h: Removed typedefs. Included <mailutils/types.h> * mailbox2/include/mailutils/attribute.h: Likewise. * mailbox2/include/mailutils/body.h: Likewise. * mailbox2/include/mailutils/debug.h: Likewise. * mailbox2/include/mailutils/envelope.h: Likewise. * mailbox2/include/mailutils/folder.h: Likewise. * mailbox2/include/mailutils/header.h: Likewise. * mailbox2/include/mailutils/iterator.h: Likewise. * mailbox2/include/mailutils/list.h: Likewise. * mailbox2/include/mailutils/lockfile.h: Likewise. * mailbox2/include/mailutils/mailbox.h: Likewise. * mailbox2/include/mailutils/mbox.h: Likewise. * mailbox2/include/mailutils/message.h: Likewise. * mailbox2/include/mailutils/observable.h: Likewise. * mailbox2/include/mailutils/observer.h: Likewise. * mailbox2/include/mailutils/pop3.h: Likewise. * mailbox2/include/mailutils/property.h: Likewise. * mailbox2/include/mailutils/refcount.h: Likewise. * mailbox2/include/mailutils/stream.h: Likewise. * mailbox2/include/mailutils/ticket.h: Likewise. * mailbox2/include/mailutils/url.h: Likewise. 2002-03-24 Sam Roberts * dotlock/dotlock.c, include/mailutils/locker.h, mailbox/locker.c: Added lock mode MU_LOCK_EXTERNAL which calls an external program to do the locking. Default is "dotlock", which is setgid mail so can lock in a mailspool that users may not have write permissions to. * mailbox/mutil.c: mu_spawnvp(): new function - like system, but doesn't use /bin/sh, just forks and calls execvp(), with system-like signal handling. * configure.in: Check for vfork(). * mail/echo.c: %d fmt not matching long arg * mail/msgset.y: fixed warning about included regex.h redefineing RE_DUP_MAX from limits.h * TODO: Added alains suggestions about read/write lock optimization, etc. * include/mailutils/*.h, comsat/comsat.h, frm/frm.c, from/from.h, imap4d/imap4d.h, url.h, mail/mail.h, mail.local/mail.local.h, mailbox/attachment.c, mailbox/filter.c, mailbox/filter_rfc822.c, mailbox/filter_trans.c, mailbox/folder.c, mailbox/folder_imap.c, mailbox/folder_mbox.c, mailbox/folder_pop.c, mailbox/iterator.c, mailbox/mailbox.c, mailbox/mailer.c, mailbox/mbx_default.c, mailbox/mbx_file.c, mailbox/mbx_imap.c, mailbox/mbx_mbox.c, mailbox/mbx_mh.c, mailbox/mbx_pop.c, mailbox/message.c, mailbox/muerrno.c, mailbox/observer.c, mailbox/registrar.c, mailbox/sendmail.c, mailbox/smtp.c, mailbox/stream.c, mailbox/url_mbox.c, mailbox2/include/mailutils/authority.h, messages/messages.c, pop3d/pop3d.h, readmsg/readmsg.h, sieve/sieve.c, sieve/sieve.h, sieve/sv.h, sieve/svcb.c, sieve/svctx.c, sieve/svfield.c, sieve/svfield.h, sieve/svutil.c: Finished split of forward declarations into <mailutils/types.h>. Now you have to include the header for the functions you want to use, but you can change a header without causing a recompile of everything. Also added some missing LGPL file headers. 2002-03-21 Sergey Poznyakoff * include/mailutils/locker.h: New flag MU_LOCKER_NULL to be used with temporary mailboxes stored in memory. * mailbox/locker.c: Do not try to lock "/dev/null" mailboxes. These are used in several programs (namely, comsat, imap4d, pop3d). * mailbox2/pop3/Makefile.am: libpop3_la_SOURCES was missing. 2002-03-19 Sam Roberts * doc/texinfo/programs.texi: Document use of ~/.<program>rc. 2002-03-18 Sam Roberts * sieve/sieve.c: Now using mu_argp_parse(), but not the capa[] (yet). * lib/: mu_argp.c, mu_argp.h: Added ~/.<progname>rc to be last config file. Fixed segv for NULL capa and added header file blurb. * mailbox/locker.c: Implemented NFS-safe locking, useing link() from a uniquely named file. 2002-03-15 Alain Magloire Nuking of some useless warnings, and make "char *" --> "const char *" when required. * mailbox/include/imap0.h: warning: comma at end of enumerator list. * mailbox/locker.c (locker_set_expire_time): warning: declaration of `time' shadows global declaration (locker_get_expire_time): declaration of `time' shadows global declaration * mailbox/mbx_default.c (mu_path_maildir): Use "const" to reinforce a constant string. * include/mailutils/mailbox.h (mu_path_maildir): constant "const". * mailbox/mbx_mbox.c (mbox_append_message): status already declared. * mailbox/memory_stream.c (_memory_truncate): Cast before doing the comparison. * mailbox/parse822.c (parse822_time): useless ';' outside function definition. * mailbox/smtp.c (smtp_send_message): warning: declaration of `from' shadows a parameter declaration of `to' shadows a parameter. 2002-03-14 Sergey Poznyakoff <gray@Mirddin.farlep.net> * mail/util.c (util_do_command): Coredumped in false branches of `if ... endif' statement. Fixed. 2002-03-13 Alain Magloire * lib/mu_dmb.c(mu_check_perm): Reinforce by using (const char *name) in the argument. * pop3d/pop3d.c: The variable state was already use as a global, use "astate" in function pop3_parse_opt(). * mail/next.c: Wrong return value; * mail/previous.c: Wrong return value; 2002-03-13 Alain Magloire * mail/echo.c: Make it aware of escape char '\'. * mail/next.c: Should print the message also. * mail/previous.c: Should print the message also. * mail/util.c(util_do_command): Memory leak cmd was not free(cmd). An empty line means now "next". 2002-03-13 Sergey Poznyakoff * include/mailutils/Makefile.am: Added types.h * argp/{argp-eexst.c,argp-namefrob.h,argp.h, argp-fmtstream.c,argp-parse.c,argp-fmtstream.h,argp-pv.c, argp-fs-xinl.c,argp-pvh.c,pin.c,argp-ba.c,argp-help.c, argp-xinl.c}: Moved to ../lib * argp/Makefile.am: Removed * argp/.cvsignore: Removed * lib/{argp-eexst.c,argp-namefrob.h,argp.h,argp-fmtstream.c, argp-parse.c,argp-fmtstream.h,argp-pv.c, argp-fs-xinl.c,argp-pvh.c,pin.c,argp-ba.c,argp-help.c, argp-xinl.c}: Added from ../argp * lib/Makefile.am: Added argp* files. * Makefile.am: Removed argp from SUBDIRS. * configure.in: Changed replace code for argp* functions. * comsat/Makefile.am: Removed @ARGPINCS@ and @ARGPLIBS@ * dotlock/Makefile.am: Likewise. * frm/Makefile.am: Likewise. * guimb/Makefile.am: Likewise. * imap4d/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * messages/Makefile.am: Likewise. * sieve/Makefile.am: Likewise. * mh/Makefile.am: Likewise. Synchronized mailbox2/include with changes dated 2002-02-27: * mailbox2/include/mailutils/mu_features.h: Added * mailbox2/include/mailutils/Makefile.am: Added mu_features.h Removed definition of __P, included <mailutils/mu_features.h>. Files affected: * mailbox2/include/mailutils/address.h, * mailbox2/include/mailutils/attribute.h, * mailbox2/include/mailutils/authority.h, * mailbox2/include/mailutils/body.h, * mailbox2/include/mailutils/debug.h, * mailbox2/include/mailutils/envelope.h, * mailbox2/include/mailutils/error.h, * mailbox2/include/mailutils/folder.h, * mailbox2/include/mailutils/header.h, * mailbox2/include/mailutils/iterator.h, * mailbox2/include/mailutils/list.h, * mailbox2/include/mailutils/lockfile.h, * mailbox2/include/mailutils/mailbox.h, * mailbox2/include/mailutils/mbox.h, * mailbox2/include/mailutils/message.h, * mailbox2/include/mailutils/mutil.h, * mailbox2/include/mailutils/observable.h, * mailbox2/include/mailutils/observer.h, * mailbox2/include/mailutils/parse822.h, * mailbox2/include/mailutils/pop3.h, * mailbox2/include/mailutils/property.h, * mailbox2/include/mailutils/refcount.h, * mailbox2/include/mailutils/stream.h, * mailbox2/include/mailutils/ticket.h, * mailbox2/include/mailutils/url.h, * mailbox2/include/mailutils/sys/address.h, * mailbox2/include/mailutils/sys/attribute.h, * mailbox2/include/mailutils/sys/authority.h, * mailbox2/include/mailutils/sys/debug.h, * mailbox2/include/mailutils/sys/envelope.h, * mailbox2/include/mailutils/sys/folder.h, * mailbox2/include/mailutils/sys/header.h, * mailbox2/include/mailutils/sys/list.h, * mailbox2/include/mailutils/sys/lockfile.h, * mailbox2/include/mailutils/sys/mailbox.h, * mailbox2/include/mailutils/sys/message.h, * mailbox2/include/mailutils/sys/observable.h, * mailbox2/include/mailutils/sys/observer.h, * mailbox2/include/mailutils/sys/refcount.h, * mailbox2/include/mailutils/sys/ticket.h, * mailbox2/include/mailutils/sys/url.h. 2002-03-11 Sam Roberts * include/mailutils/: address.h, locker.h, mailbox.h, message.h, types.h: Got tired of recompiling EVERYTHING when I touched locker.h, so started splitting common types into <mailutils/types.h>. * include/mailutils/error.h: mu_verror() wasn't prototyped. * mailbox/: filter_trans.c, folder_imap.c, mailbox.c, mbx_default.c, mbx_mbox.c, sendmail.c, stream.c, include/imap0.h: Corrected type mismatches visible on 64-bit systems, and including locker.h, some misc compiler warnings. * mail.local/mail.local.h: Need to include locker.h. * lib/strchrnul.c, mail/mail.c, mail/mail.h, mail/send.c, mail/size.c, mail/util.c: Corrected type mismatches visible on 64-bit systems. * argp/argp-parse.c: alloca wasn't included. * messages/messages.c: Corrected type mismatches visible on 64-bit systems. * imap4d/: copy.c, store.c, util.c: Corrected type mismatches visible on 64-bit systems. * imap4d/: imap4d.h, select.c: Select now fails if the locking fails. * TODO: more things todo (Steven Michael ROBBINS <stever@po-box-cgrl-lab.cs.mcgill.ca> contributed a patch to fix 64-bit type mismatches.) 2002-03-09 Sergey Poznyakoff * lib/mu_argp.c: Process user's private initialization file after processig the site-wide one. (mu_create_argcv): was allocating an extra slot in argv array. * mail.local/main.c: Added `auth' capability. * doc/texinfo/programs.texi: Documented new configuration file mechanism. 2002-03-09 Sergey Poznyakoff * configure.in: Check for libresolv. Based on the discussion with Sam, changed handling of mailutils' command line options. Command line is parsed using mu_argp_parse() call. mu_argp_parse scans global configuration file and processes any options found there before those from the command line. The options are separated by categories (capabilities): mailutils --maildir, --license auth --sql-.* family, --pam-service logging --log-facility daemon --daemon, --inetd, --port, --timeout If a capability name appears in configuration file, it should be prefixed with : to discern it from the utility name. * examples/mailutils.rc: Updated to reflect changes in the syntax. * lib/mu_argp.c: New function mu_argp_parse is intended to be used by all programs in the package in order to do command line parsing. * lib/mu_argp.h: Removed unneeded prototypes. Added prototype for mu_argp_parse(). * comsat/comsat.c: Use mu_argp_parse. * frm/frm.c: Likewise. * guimb/main.c: Likewise. * imap4d/imap4d.c: Likewise. * mail/mail.c: Likewise. * messages/messages.c: Likewise. * pop3d/pop3d.c: Likewise. * mail.local/main.c: Likewise. (deliver): Restored erroneously removed variable sb. * pop3d/apop.c (pop3d_apopuser): Changed scope of auto variable rc. 2002-03-01 Sam Roberts * mailbox/mbx_mboxscan.c: Check return value of locker_lock(). * Makefile.am, configure.in: Added dotlock. * mailbox/: mbx_mbox.c, mbx_mboxscan.c, mbx_mh.c: locker API modified. using mu_errstring() instead of strerror(). * mailbox/mbx_pop.c: Using mu_errstring() instead of strerror(). * pop3d/lock.c: locker_lock() api changed. pop3d uses MU_LOCKER_PID. * mail.local/main.c: Retrying the dot lock is now handled by the locker_t. * dotlock/: .cvsignore, Makefile.am, dotlock.c: dotlock - setgid program to dot lock a file, modelled on mutt_dotlock. * mailbox/locker.c, include/mailutils/locker.h: New modes, including a retry mode (the default), removed fcntl and stub read/write lock mode. New function, to remove a lock even if not owned (useful for the external dotlock utility). New functions, to set the expire time for MU_LOCKER_TIME, the flags, and the retries and retry sleep for MU_LOCKER_RETRY. 2002-02-27 Sam Roberts * examples/: Addrs.good, addr.c: New addr return codes. * mail.local/mail.local.h: Including <mailutils/errno.h>. * mail/mail.h: Added <strings.h> for systems that have it. 2002-02-27 Sergey Poznyakoff * imap4d/status.c: Provide better diagnostics. * comsat/comsat.c: Use mu_path_maildir instead of maildir. * guimb/collect.c: Likewise. * imap4d/select.c: Likewise. * lib/mu_argp.c: Likewise. * mail.local/main.c: Likewise. * pop3d/apop.c: Likewise. * pop3d/user.c: Likewise. * lib/mu_argp.h: Removed extern char *maildir. * mailbox/mbx_default.c: Essentially rewritten. mailbox_open_default() supports the following naming schemes: % --> system mailbox for the real uid %user --> system mailbox for the given user ~/file --> /home/user/file ~user/file --> /home/user/file +file --> /home/user/Mail/file =file --> /home/user/Mail/file * mail/file.c: Do not handle '%name' separately: mailbox_open_default now does it. * mail/mail.c: Properly handle --user (open user's system mailbox). * mailbox/mutil.c (mu_getcwd): New function. Return the name of current working directory. The return value is malloc'ed (mu_get_full_path): New function. Translate cwd-relative pathname to its absolute equivalent. Both moved from mbx_default.c. * mail.local/mailquota.c (check_quota): Initialize contentd to all zeroes before mu_dbm_fetch. This is needed by (at least) Berkeley DBM. * include/mailutils/mu_features.h: (new) Define system-dependent macros, used by all mailutils. Currently, it contains only __P() definition. * include/mailutils/Makefile.am: Added mu_features.h. Removed definitions of __P() scattered over multiple header files. Included <mailutils/mu_features.h> instead. Files affected: * imap4d/imap4d.h, * mail/mail.h, * pop3d/pop3d.h, * readmsg/readmsg.h, * include/mailutils/address.h, * include/mailutils/attribute.h, * include/mailutils/auth.h, * include/mailutils/body.h, * include/mailutils/debug.h, * include/mailutils/envelope.h, * include/mailutils/errno.h, * include/mailutils/error.h, * include/mailutils/filter.h, * include/mailutils/folder.h, * include/mailutils/header.h, * include/mailutils/iterator.h, * include/mailutils/list.h, * include/mailutils/locker.h, * include/mailutils/mailbox.h, * include/mailutils/mailer.h, * include/mailutils/message.h, * include/mailutils/mime.h, * include/mailutils/monitor.h, * include/mailutils/mutil.h, * include/mailutils/observer.h, * include/mailutils/parse822.h, * include/mailutils/property.h, * include/mailutils/registrar.h, * include/mailutils/stream.h, * include/mailutils/url.h, * mailbox/include/address0.h, * mailbox/include/attribute0.h, * mailbox/include/auth0.h, * mailbox/include/body0.h, * mailbox/include/debug0.h, * mailbox/include/envelope0.h, * mailbox/include/filter0.h, * mailbox/include/folder0.h, * mailbox/include/header0.h, * mailbox/include/imap0.h, * mailbox/include/iterator0.h, * mailbox/include/list0.h, * mailbox/include/mailbox0.h, * mailbox/include/mailer0.h, * mailbox/include/message0.h, * mailbox/include/mime0.h, * mailbox/include/monitor0.h, * mailbox/include/observer0.h, * mailbox/include/property0.h, * mailbox/include/registrar0.h, * mailbox/include/stream0.h, * mailbox/include/url0.h. * lib/argcv.h: Use PROTOTYPES to determine whether the compiler understands function prototypes. 2002-02-25 Sam Roberts * sieve/examples/: .cvsignore, Makefile, Test, mbox.complex, t-exists.sv, test.out: Exercise a little more of sieve. * mailbox/wicket.c, mailbox/message.c, imap4d/imap4d.h, mail/mail.c, mail/mail.h, pop3d/apop.c, pop3d/pop3d.h, readmsg/readmsg.c, readmsg/readmsg.h, sieve/sieve.c, sieve/sv.h, sieve/svcb.c, sieve/svctx.c examples/Makefile, examples/addr.c, examples/mbox-check.c, examples/mbox-dates.c, examples/mbox-explode.c, examples/mimetest.c, examples/msg-send.c, examples/url-parse.c, comsat/comsat.c, comsat/comsat.h, from/from.c, guimb/collect.c, guimb/guimb.h: Replaced strerror() with mu_errstring(). * include/mailutils/errno.h, mailbox/Makefile.am, mailbox/muerrno.c: Added muerrno.c to the build, added locker error numbers. 2002-02-23 Sam Roberts * mailbox/: message.c, smtp.c: Include <mailutils/mutil.h> for mu_getpwuid() prototype. * doc/texinfo/programs.texi: A # must be preceeded by whitespace to start an rcfile comment. 2002-02-20 Sam Roberts * TODO: Updated. 2002-02-23 Sergey Poznyakoff * lib/argcv.c: Yesterday's fix makes argcv_get include trailing whitespace to the argv array. To fix: (argcv_scan): Return len+1 if called on or after the terminating null character. (argcv_get): Initialize *argc to zero and continue scanning until argcv_scan return is > len. Thanks Sam for noticing. More fixes: (argcv_scan): Correclty handle comments without intervening whitespace between the comment character and remaining text, e.g.: set a=2 #comment 2002-02-22 Sergey Poznyakoff * lib/argcv.c (argcv_get): Bugfix, *argc must be initialized to 1. * lib/mu_argp.c (mu_common_argp_parser): Handle ARGP_KEY_FINI case. (mu_argp_error_code): new global. Specifies exit code for exits on error. * lib/mu_argp.h: extern declaration for mu_argp_error_code. * comsat/comsat.c: Removed call to mu_normalize_maildir. * imap4d/imap4d.c: Likewise. * mail.local/main.c: Likewise. * pop3d/pop3d.c: Likewise. * imap4d/status.c: Syntax cleanup. * mail/mail.h: include mu_argp.h * mail/mail.c (main): Handle mailutils-common arguments. * frm/frm.c: Likewise. * guimb/main.c: Likewise. * messages/messages.c: Likewise. * frm/Makefile.am: Added ARGP stuff. * guimb/Makefile.am: LIkewise. * imap4d/Makefile.am: Restored imap4d_DEPENDENCIES. Without it @AUTHOBJS@ do not get into dependencies. 2002-02-21 Jeff Bailey <jbailey@outpost.dnsalias.org> * sieve/Makefile.am: Link @ARGPLIBS@ before libmailutils.la to compensate for lack of interlibrary dependancies * configure.in: Detect either curses or ncurses * include/mailutils/Makefile.am: Add errno.h 2002-02-20 Sam Roberts * comsat/action.c, comsat/cfg.c, lib/argcv.c, lib/argcv.h, lib/mu_argp.c, mail/send.c, mail/util.c, mh/mh_argp.c, pop3d/popauth.c: argcv_get() now (optionally) strips comments while parsing. Its the right place because it tokenizes, and whether a char is a comment or not depends on whether its in the middle of a token or not: "hi # there" # comment. * sieve/sieve.c: Now supports a ~/.sieverc file. Mine looks like: # ~/.sieverc # Just moves my mail into my local spool. -dTt --ticket=~/.tickets -f pop://pop.uniserve.com ~/.filter.sv * include/mailutils/debug.h: The debug levels are a bitmask, and I'd started to enumerate them. Oops. * mailbox/muerrno.c: Began the task of returning more informative error numbers. If this looks useful, we should all spread it through the files we touch! * doc/texinfo/: mailutils.texi, programs.texi: The info docs were getting installed in the "Miscellaneous" section of the info directory, now they go in GNU Libraries, with links to the programs under GNU Utilities, as seemed to be suggested by the texinfo docs. Maybe there's a better convention? * include/mailutils/errno.h, mailbox/address.c, mailbox/mailbox.c, mailbox/parse822.c: Began the task of returning more informative error numbers. If this looks useful, we should all spread it through the files we touch! * sieve/svcb.c: Was using the POSIX (1003.1b) ENOTSUP, changed to ENOSYS, which will exist most places, as Jeff pointed out. 2002-02-20 Sergey Poznyakoff * imap4d/status.c (imap4d_status): Bugfix: was using improperly created mailbox name for INBOX. Be more robust in handling erroneous constructs. Thanks Sam for reporting. 2002-02-20 Jeff Bailey <jbailey@outpost.dnsalias.org> * argp/Makefile.am: Remove inter-library dependancy. Until QNX has a recent libtool that will support this. Thanks Sam, Sergey for reporting and finding the fix. 2002-02-20 Sam Roberts <sroberts@uniserve.com> * frm/Makefile.am, from/Makefile.am, imap4d/Makefile.am, messages/Makefile.am, readmsg/Makefile.am, sieve/Makefile.am: The exe_DEPENDENCIES lines prevent the _LDADD lines being used for dependencies, so the exes dont' get rebuilt when the libraries are rebuilt, unless explicitly listed. 2002-02-19 Sergey Poznyakoff <gray@Mirddin.farlep.net> Use of system getpwuid() in many places of the code actually broke mu_getpwnam() pardigm. To fix it, a wrapper function, mu_getpwuid(), is introduced. It allows to use 'overloaded' getpwuid calls. In the simplest case, it boils down to calling getpuid(). Applications, registering getpwname function by using mu_register_getpwname() are expected to register its getpwuid counterpart by using mu_register_getpwname(). "Virtual domains" (mutil.c:407) seem to be an exception: there is no easy way to create appropriate getpwuid() function. This does not break the virtual domain functionality, however. * mailbox/mutil.c (mu_getpwuid): new function. Allows to use overloaded getpwuid() in the same way as mu_getpwnam() does it for getpwnam(). (mu_register_getpwuid): Overload getpwuid function. * include/mailutils/mutil.h: Proto for mu_getpwuid(). * lib/mu_argp.c: New options: --sql-getpwuid for setting sql query returning passwd data for a given uid, and --pam-service for setting the PAM service name to be used. * lib/mu_argp.h: Added extern for pam_service. * MySql/MySql.c (getMpwnam): Return username along with other data. (getMpwuid): New function. * MySql/MySql.h: Added extern declaration for sql_getpwuid_query. * examples/mailutils.rc: Fixed queries. * mail.local/main.c: register getMpwuid(). * imap4d/imap4d.c: Initialize pam_service. Register getMpwuid(). * pop3d/pop3d.c: Likewise. * imap4d/login.c: Use pam_service instead of hardcoding PAM service name. * pop3d/user.c: Likewise. * imap4d/bye.c: Use mu_getpwuid() instead of getpwuid(). * imap4d/copy.c: Likewise. * imap4d/rename.c: Likewise. * imap4d/select.c: Likewise. * imap4d/status.c: Likewise. * mailbox/mbx_default.c: Likewise. * mailbox/message.c: Likewise. * mailbox/smtp.c: Likewise. * mailbox/wicket.c: Likewise. * mailbox2/mutil.c: Likewise. 2002-02-19 Sergey Poznyakoff * lib/mu_argp.c (mu_create_argcv): Fixed memory overrun. 2002-02-18 Sergey Poznyakoff * acconfig.h: Define rl_completion_matches for readline < 4.2 * configure.in: Check for rl_completion_matches being present. * guimb/guimb.h: Include <string.h>. * mail/mailline.c: Changed declaration of ml_command_generator(). (ml_command_completion): use rl_completion_matches(). Patch provided by John R. Daily. 2002-02-18 Jeff Bailey <jbailey@outpost.dnsalias.org> * mail.local/Makefile.am: Fix install_exec_hook so that DESTDIR installs work correctly. * comsat/Makefile.am: Use libmailutils.la 2002-02-17 Sergey Poznyakoff * imap4d/list.c: Take into account st_dev. Patch provided by Sam Roberts. * acconfig.h: Placeholder for dev_t. * configure.in: AC_CHECK_TYPE(dev_t) 2002-02-17 Sergey Poznyakoff * imap4d/list.c: Prevent possible infinite recursion (Fixes Bug#134330). * acconfig.h: Placeholder for ino_t. * configure.in: AC_CHECK_TYPE(ino_t) * comsat/comsat.c: Removed unused function. 2002-02-16 Sergey Poznyakoff * configure.in (LTLIBOBJS hack): escape '[' and ']' 2002-02-15 Jeff Bailey <jbailey@outpost.dnsalias.org> * configure.in: Hack to make AC_REPLACE_FUNCS refer to .lo instead of .o * lib/Makefile.am: Use libtool objects instead. 2002-02-14 Sergey Poznyakoff * mail.local/main.c: Removed confusing print_help() function. * imap4d/authenticate.c: Fixed indentation. 2002-02-13 Jeff Bailey <jbailey@outpost.dnsalias.org> This change permits linking on systems that don't support interlibrary dependancies inherently like SCO Openserver. * sieve/Makefile.am: Link in libtool-based libmailutils. * readmsg/Makefile.am: Link in libtool-based libmailutils. * pop3d/Makefile.am: Link in libtool-based libmailutils. * mh/Makefile.am: Link in libtool-based libmailutils. * messages/Makefile.am: Link in libtool-based libmailutils. * mapi/Makefile.am: Link in libtool-based libmailutils. * mail.local/Makefile.am: Link in libtool-based libmailutils. * mail/Makefile.am: Link in libtool-based libmailutils. * lib/Makefile.am: Generate libtool-based libmailutils. * lib/.cvsignore: Add files that libtool generates * imap4d/Makefile.am: Link in libtool-based libmailutils. * guimb/Makefile.am: Link in libtool-based libmailutils. * from/Makefile.am: Link in libtool-based libmailutils. * frm/Makefile.am: Link in libtool-based libmailutils. * argp/Makefile.am: Use libtool * configure.in: Build libtool ARGP libraries 2002-02-11 Sergey Poznyakoff * imap4d/auth_gss.c (auth_gssapi): Use imap4d_gss_userok() to check if the principal is allowed to use a given mailbox. 2002-02-11 Sam Roberts * pop3d/pop3d.c: Removed static prototype for non-existent function. * doc/rfc/: rfc1891.txt, rfc1892.txt, rfc1893.txt, rfc1894.txt: Added RFCs related to delivery and message status notification. * sieve/: sieve.c, svcb.c: better logging and error reporting * include/mailutils/debug.h, mailbox/debug.c, mailbox/include/debug0.h: Added level argument of mu_debug_print() to the print callback, useful for determing the level and forwarding to syslog, or something. 2002-02-09 Sam Roberts * mailbox/mbx_default.c: removed unused variable 2002-02-08 Sam Roberts * TODO: More things I think should be done, or did. * mailbox/wicket.c: wicket: a ticket file now can contain multiple urls, when looking for a ticket, the first one which contains authentication information for the incomplete url is returned. wildcards are ok, so you can do: # my ~/.tickets pop://sam:pass@pop.uniserve.com *://sroberts:gnuless@mail.certicom.com imap://;AUTH=anon@* Actually, the last doesn't work, but it SHOULD. Another day. * include/mailutils/url.h, mailbox/url.c: url_is_ticket() - new function, determines whether a url_t contains ticket information for another url * doc/texinfo/url.texi: missing an @var{} * mailbox/url_mbox.c: gcc doesn't like signed chars as array indexes, they could be negative * sieve/sieve.c: buglet, forgot to initialize opts 2002-02-07 Sergey Poznyakoff * imap4d/util.c (util_localname): return FQDN * imap4d/capability.c: Forgotten to commit. 2002-02-07 Sergey Poznyakoff * acconfig.h: Added WITH_GSSAPI define. * configure.in: New option: --with-gssapi * imap4d/auth_gss.c: (new) GSSAPI authentication. * imap4d/Makefile.am: Added auth_gss.c * imap4d/append.c (imap4d_append0): Added missing call to stream_open(). * imap4d/authenticate.c: Basic framework for AUTHENTICATE command. Added auth_gssapi hook. * imap4d/capability.c: AUTH=GSSAPI if supported. * imap4d/imap4d.c: ifile should be global as well as ofile. It will be needed by authentication handlers. * imap4d/imap4d.h: Added new protos. * imap4d/util.c: Base64 encoding/decoding functions. filter_trans can't be used for this purpose, since its encoder inserts newlines after each 76 characters of output. * m4/gssapi.m4: (new) Check for gssapi libraries and header files. * m4/Makefile.am: Added gssapi.m4 * mail/mail.c (main): Fixed 'No mail for...' reporting. * mailbox/filter_trans.c (trans_read): Control number of bytes read by stream_read(). * mailbox/memory_stream.c (_memory_truncate): Bugfix. * TODO: Updated. 2002-02-07 Jeff Bailey <jbailey@outpost.dnsalias.org> * guimb/.cvsignore: Add .libs * .cvsignore: Add stamp-h1 * sieve/Makefile.am: Add sieve.h for make dist. * doc/texinfo/programs.texi: Put break between @end itemize and } to quiet error from texi2dvi. * doc/texinfo/mailer.texi: Add space to quiet error from makeinfo. * readmsg/.cvsignore: New File * doc/man/popauth.1: New file. * doc/man/Makefile.am: Add popauth.1 2002-02-05 Sergey Poznyakoff Use argp_ functions instead of getopt to parse command line arguments. This allows all mailutils programs to share common code and to have the same subset of command line options. Besides, this allows to have a single configuration file for entire package. The common command-line subsets are (struct argp_child): 1. mu_common_argp_child: handles --maildir,--log-facility, --license and --sql-.* family of options. (The latter are used to supply data for SQL getpwnam et al. functions instead of hard-coding them). 2. mu_daemon_argp_child: handles --daemon,--inetd,--port and --timeout options. * lib/mu_argp.c: (new) Handle command line arguments, common for all mailutils programs. * lib/mu_argp.h: (new) Definitions for handling common mailutils command-line arguments. * lib/Makefile.am: Added mu_argp.[ch] * comsat/Makefile.am: Added @ARGP.*@ substitutions * imap4d/Makefile.am: Likewise. * mail.local/Makefile.am: Likewise. * pop3d/Makefile.am: Likewise. * comsat/comsat.c: Use argp_parse instead of getopt_long. * imap4d/imap4d.c: Likewise. * mail.local/main.c: Likewise. * pop3d/pop3d.c: Likewise. * comsat/comsat.h: Added mu_argp.h and related stuff * imap4d/imap4d.h: Likewise. * imap4d/util.c: Likewise. * mail.local/mail.local.h: Likewise. * pop3d/extra.c: Likewise. * pop3d/pop3d.h: Likewise. * examples/mailutils.rc: (new) Sample mailutils configuration file. * doc/texinfo/programs.texi: Added entry about mailutils.rc configuration file. * MySql/MySql.c: Use configurable queries instead of hardcoded ones. * MySql/MySql.h: Added new external declarations. Removed unneeded defines. * configure.in: Removed notice about MySql.h 2002-02-04 Sergey Poznyakoff * mail.local/Makefile.am (mail_local_LDADD): Add @AUTHLIBS@. * mail.local/mail.local.h: Include "../MySql/MySql.h" when necessary. * mail.local/main.c (main): Register virtual domain handlers. Use mu_getpwnam. (deliver): Set MU_LOCKER_PID bit on the locker. 2002-01-30 Sergey Poznyakoff * mail.local/main.c (main): Return EX_USAGE on command line usage errors. (deliver): Return EX_TEMPFAIL if mailbox cannot be locked. * mailbox/url_mbox.c (_url_path_index): Use character translation table to allow for '.', etc. in the usernames. Fixed memory overrun. (_url_path_rev_index): Use character translation table. 2002-01-26 Sam Roberts * mailbox/folder_imap.c: folder_imap_create() - removed, code now in mailbox_imap_open(). imap_mailbox_name_match() - new function, uses strcasecmp() for INBOX, since INBOX is itself in any case combination, and fnmatch() otherwise. imap_list() - mailbox name (an ASTRING) wasn't being unquoted. folder_imap_list() - always failed to match it's name arg against the mailbox name (imap_list needed to unquote the name, and the name comparison needed to treat INBOX specially). * mailbox/mbx_imap.c: Moved the mailbox creation functionality of folder_imap_create() into mailbox_imap_open(). Now mailbox_imap_open() will fail if the mailbox doesn't exist, or can't be created despite creation being requested (like the other types of mailbox). * mailbox/include/imap0.h: m_imap_t - added state to keep track of which folder function is in progress when a mailbox function calls several folder functions. 2002-01-25 Sam Roberts * doc/rfc/rfc2060.txt: LIST section was 6.3..8., not 6.3.8, made it hard to search for! 2002-01-23 Sergey Poznyakoff * mail.local/mail.local.h: Define correct EX_ values if sysexits.h is missing. 2002-01-22 Sam Roberts * sieve/: sieve.c, sieve.h, sv.h, svcb.c, svctx.c: Implemented redirect action, and added option for sieve to specify the mailer. * configure.in: Check for <sysexits.h>. * mail.local/mail.local.h: Work around missing <sysexits.h>. * mailbox/sendmail.c: State now tracks whether its been opened, rather than segving. * include/mailutils/address.h: Removed prototype for function that isn't defined anywhere. * mailbox/mailer.c: Return ENOENT if the url type wasn't registered, like the other factory creation functions. * include/mailutils/list.h, mailbox/list.c: New function: list_do(), calls a function on each item in the list. * mailbox/mutil.c: Needed <sys/stat.h> on QNX6. 2002-01-22 Sergey Poznyakoff * mail.local/mail.local.h: Added network-related includes. * mail.local/main.c: Implemented biff notification. * mail.local/script.c: Added configurable debugging. * guimb/main.c: Fixed help display. * doc/texinfo/programs.texi: Updated. 2002-01-21 Sergey Poznyakoff * acconfig.h: Added WITH_GUILE define. * configure.in: Define WITH_GUILE. Added mail.local. * Makefile.am: Added mail.local. * guimb/run_scm.c: Deleted. * guimb/Makefile.am: Removed run_scm.c * guimb/collect.c (guimb_catch_body, guimb_catch_handler) New functions. * guimb/guimb.h: Added new declarations. * guimb/main.c: New command line options: --maildir (set mailspool pathname), --source (set scheme source file name). Use mu_process_mailbox instead of run_main. * guimb/scm/sieve.scm: Add "#!" magic to the beginning of the output script. Improved diagnostics. Fixed bug in next-token-from-port. * libmu_scm/mu_guimb.c: (new) * libmu_scm/Makefile.am: Added mu_guimb.c * libmu_scm/mu_message.c (mu_message_send): Initialize mailer to NULL. * libmu_scm/mu_scm.h: Added proto for mu_process_mailbox. * mail.local: Added to repository. * mail.local/Makefile.am: Likewise. * mail.local/.cvsignore: Likewise. * mail.local/mail.local.h: Likewise. * mail.local/main.c: Likewise. * mail.local/mailquota.c: Likewise. * mail.local/script.c: Likewise. 2002-01-21 Sergey Poznyakoff * configure.in: New option --with-maildir allows to specify the location of mailspool instead of the default _PATH_MAILDIR. * acconfig.h: Include <paths.h>. Define MU_PATH_MAILDIR. * mailbox/mbx_default.c (mailbox_create_default): Use MU_PATH_MAILDIR. * guimb/collect.c (collect_output): Likewise. * imap4d/imap4d.c: Likewise. * pop3d/pop3d.c: Likewise. * comsat/comsat.c: Introduced --maildir option. * pop3d/apop.c (pop3d_apop): Use maildir instead of _PATH_MAILDIR (should have been committed 2002-01-15). * mailbox/parse822.c (str_append): Check for NULL. * mailbox/message.c (message_destroy): Fixed typo in comment. * imap4d/imap4d.h: Removed superfluous definition of _PATH_MAILDIR. * pop3d/pop3d.h: Likewise. * lib/mu_dbm.c: (mu_fcheck_perm, mu_check_perm): Return OK if mode is 0. 2002-01-19 Sam Roberts * sieve/: svcb.c, svutil.c: sv_mu_save_to() became mailbox/message.c:message_save_to_mailbox() * sieve/sieve.c: Was setting debug on the mailbox before creating it... * include/mailutils/message.h, mailbox/message.c: message_save_to_mailbox(): convenience function, perhaps it should go in mailbox/mutil.c, but nothing else in there is a mailutils API wrapper. * include/mailutils/mailbox.h, mailbox/mailbox.c: mailbox_has_debug(): wasn't a way to see if a mailbox had one * mailbox/folder_mbox.c: Give mbox folders a null authentication object, mailbox_get_authority() will now return one instead of suceeding, but not returning an object. * include/mailutils/folder.h, mailbox/folder.c: folder_has_debug(): there wasn't a way to see if folder had a debug object * include/mailutils/auth.h, mailbox/auth.c: authority_create_null(): creates an authority that successfully does nothing, useful for concrete types that need to return an authority, but don't do any authentication. * mailbox/mbx_imap.c: Append to INBOX if an explicit path wasn't supplied. * mailbox/mbx_mbox.c: X-UID is 5 chars, not 4, and this line will match X-UIDL too, is that intended? * mailbox/url_mbox.c: including strings.h as well * mailbox/debug.c: Removed a FIXME that seems to have been fixed. 2002-01-18 Sergey Poznyakoff * mailbox/mutil.c: New function mu_tempfile(). * include/mailutils/mutil.h: Declaration for mu_tempfile(). * guimb/collect.c: Use mu_tempfile. * mail/send.c: Likewise. * mail/var.c: Likewise. * mailbox/body.c: Likewise. * mailbox/mbx_mh.c: Likewise. * mailbox/muerror.c: New function mu_verror(). * guimb/util.c: Removed util_tempfile(). * mail/util.c: Likewise. 2002-01-15 Sam Roberts * sieve/: sieve.c, sv.h, svcb.c, svctx.c, svutil.c, examples/Makefile, examples/Test, examples/mbox.complex, examples/t-complex.sv, examples/t-mailutils.sv: More testing and resultant polishing, -k switch to sieve to keep on going after an error sieving a message, don't discard a message unless the script completed all the actions sucesfully on a message, better error reporting and logging, workarounds around problems/differences between mailbox types, and a test script that exercises sieve on an mbox. 2002-01-15 Sergey Poznyakoff * imap4d/imap4d.c: New command line option --maildir (-m). Register mbox_record at startup. * pop3d/pop3d.c: Likewise. * imap4d/imap4d.h: Extern declaration for maildir. * pop3d/pop3d.h: Likewise. * imap4d/select.c: Use maildir instead of _PATH_MAILDIR. * pop3d/user.c: Likewise. * mailbox/mutil.c: (mu_normalize_maildir) New function. Makes sure the mailbox specification either is a pathname ending with '/', or matches regexp 'mbox:.*user='. * include/mailutils/mutil.h: (mu_normalize_maildir) Added prototype. * mailbox/url_mbox.c: Handle extended URL specification. Implemented three hash schemes. * comsat/action.c: (expand_line): Removed unused variable. * libmu_scm/mu_mailbox.c: Fixed indentation. * libmu_scm/mu_address.c: (_get_address_part) Removed unused variable. * libmu_scm/mu_mime.c: (mu_scm_mime_print) Added missing return value. * pop3d/apop.c: Fixed typecasts. 2002-01-14 Sergey Poznyakoff * argp/argp-parse.c (parser_init): Fixed erroneous typecasts. * guimb/scm/Makefile.am: Added numaddr.scm to pkgdata_DATA. 2002-01-12 Sam Roberts * sieve/: sieve.c, sieve.h, svcb.c, svctx.c, svfield.c, svutil.c, sv.h: API of sieve engine now includes diagnostic callbacks, and is close to stable, implementation will be soon. 2002-01-05 Sam Roberts * sieve/: Makefile.am, sieve.c, sv.h, svcb.c, svctx.c, svutil.c: Split the implementation of the mailutils-based sieve engine out of sieve.c, which now contains only a utility that uses the engine to sieve mailboxes. * sieve/sieve_interface.h: exposed sieve_errstr() in public API, and declare sieve_errname() * sieve/script.c: lower-cased some error strings, and added str_errname() to return the string of an error enum. 2001-12-31 Alain Magloire * doc/texinfo/programs.texi: Descibe the readmsg utility. * configure.in: Enable readmsg. * Makefile.in: Enable readmsg. * readmsg/readmsg.c: Implementation. * readmsg/msglist.c: Implement Elm weird expansion. 2001-12-29 Sergey Poznyakoff * guimb/scm/numaddr.scm: (new) Implements "numaddr" extension test. The test counts Internet addresses in structured headers that contain addresses. It returns true if the total number of addresses satisfies the requested relation, e.g.: if numaddr :over [ "To", "Cc" ] 50 { discard; } * guimb/scm/Makefile.am: Added numaddr.scm. * guimb/scm/redirect.scm: Use mu-message-send instead of sieve-message-bounce. * guimb/scm/reject.scm: Likewise. * guimb/scm/sieve-core.scm: Introduced sieve-daemon-email variable. Removed sieve-message-bounce, since recent modifications to mailer_send_message() and mu-message-send provide all the required functionality. * libmu_scm/mu_message.c: Optional parameters may be #f. * pop3d/popauth.c: Reset the user privileges in case popauth is installed setuid. 2001-12-28 Sergey Poznyakoff * comsat/comsat.h: Added include <argcv.h> * guimb/collect.c: (collect_create_mailbox) Removed unused auto variable. * guimb/guimb.h: Added missing includes and prototypes. * lib/mu_dbm.h: Likewise. * libmu_scm/mu_message.c: (mu_message_send) Synchronized with recent changes to mailer_send_message(). (mu_message_get_user_flag) Removed unused variable. * libmu_scm/mu_port.c: Removed unused variables. * mh/inc.c: Renamed static truncate to avoid name clash with the libc function. * mh/mh.h: Added missing includes and prototypes. * mh/mh_argp.c: Added missing includes. * mh/mh_format.c: (strobj_create) Removed unused variable. 2001-12-17 Sam Roberts * doc/texinfo/mailer.texi, include/mailutils/mailer.h, mailbox/mailer.c, mailbox/sendmail.c, mailbox/smtp.c, mailbox/include/mailer0.h: mailer_send_message() now takes optional from and to addresses, so they can be specified rather than deduced from the env or message body. * mail/send.c: modified to compile against the changed mailer_send_message() * examples/: Makefile, msg-send.c: Added msg-send example of using the mailer_t API. * mailbox/url_sendmail.c: Now takes advantage of url_parse(). * TODO: Idea for a popen() stream_t wrapper. * doc/texinfo/stream.texi, include/mailutils/stream.h: Forgot to add stdio_stream_create() to the header, it opens a stream_t on an existing FILE, and you can choose whether it fcloses() it or not. * examples/.cvsignore: updated 2001-12-16 Alain Magloire * mailbox/address.c: Problem between signed and unsigned comparison. 2001-12-16 Sam Roberts * TODO: updated with some notes about the doc examples * examples/mimetest.c, include/mailutils/message.h, mailbox/attachment.c: (message_get_attachment_name, message_aget_attachment_name): new APIs, used to be private to mailbox/attachment.c. (message_save_attachment): filename can be NULL, it defaults to the attachment's name * doc/texinfo/stream.texi: updated - not much text, but at least the args are correct. * TODO: updated * mailbox/attachment.c: gnu indented * examples/: mbox-dates.c, mbox-explode.c: Added -d flags. * examples/mimetest.c: gnu indented 2001-12-16 Alain Magloire * mailbox/body.c: Call lazy_create() _before__ file_stream_create() to create the temporary file. * examples/mimetest.c: An example on how to play with attachments. The code was written by Dave Inglis. 2001-12-16 Sam Roberts * comsat/: comsat.c imap4d/: append.c, fetch.c include/mailutils/: stream.h mailbox/: attachment.c, body.c, file_stream.c, filter.c, folder_imap.c, header.c, mapfile_stream.c, mbx_mbox.c, mbx_mh.c, mbx_pop.c, memory_stream.c, smtp.c, stream.c, tcp.c mailbox/include/: Makefile.am, stream0.h, tcp0.h Modified stream creation and opening. The *_stream_create() functions now take the specific arguments appropriate to them and setup a stream_t so that stream_open(), which now takes no arguments, can perform whatever actions are appropriate when opening that particular kind of stream. I have tested the changes with the example programs and sieve, but not with the imap or pop servers. 2001-12-12 Sam Roberts * lib/: argcv.c, xmalloc.c: Fixed warnings about functions called without prototypes. * sieve/sieve.c: First crack at including wicket_t's ticket, not tested. * m4/debug.m4: Added -Wall in debug mode. 2001-12-10 Sam Roberts * comsat/.cvsignore, doc/rfc/.cvsignore, examples/.cvsignore, mail/.cvsignore, sieve/examples/.cvsignore: Ignored. * mailbox/tcp.c: I'm about to modify this file, so I'm GNU indenting it so I can see reasonable diffs. No other changes. 2001-12-03 Alain Magloire Suprisingly some OSes do not have getpass() drop a dumb version in lib/getpass.c for missing plaforms. * configure.in: Check for getpass (); * lib/getpass.c: New file. * lib/Makefile.am: Updated. 2001-12-03 Sergey Poznyakoff * configure.in: Fixed inconsistency: --with-dbm flag was erroneously named --with-old-dbm in the help output. * lib/mu_dbm.c: New function mu_dbm_stat(): retrieve struct stat for a database file (or its *.pag part for ndbm/gdbm). * pop3d/popauth.c: Added --modify, --add, --delete and --create options. Allow only --modify when the user is not the owner of the database. This allows usual users to use popauth the way they use system passwd command, provided popauth is installed setuid. * guimb/scm/sieve.scm: Delete temp-file after running the script. 2001-11-26 Alain Magloire * doc/texinfo/mailer.texi: Replace @func with @code missing @end deftypefun 2001-11-26 Sam Roberts * doc/texinfo/mailer.texi: Hacked up work-in-progress of the mailer API, but worth committing before I commit all the code. * mailbox/folder_pop.c: Added <strings.h> for QNX6. * .cvsignore, doc/.cvsignore: ignores sorted, and added _* * doc/texinfo/address.texi, include/mailutils/address.h, mailbox/address.c: address_aget_email() - like _get_email() but mallocs. address_createv() - like address_create(), but takes an array of strings. * examples/: Makefile, Urls, Urls.good: Updated url_parse() test case. * comsat/comsat.h: Need <paths.h> and <strings.h> under QNX6. * doc/texinfo/url.texi, mailbox/url.c: Url syntax extended. If scheme: is not followed by a "//", then the rest of the line is returned as the path. Also a bare scheme is now legal. So "sendmail:" and "sendmail:/sbin/mail-inject" are now legal. 2001-11-21 Sergey Poznyakoff * comsat/comsat.c: Provide default for _PATH_MAILDIR for systems lacking it. 2001-11-20 Jeff Bailey <jbailey@outpost.dnsalias.org> * configure.in: Set CPPFLAGS last. $(sysconfdir) requires make to get it expanded, and it fubars autoconf tests. 2001-11-17 Alain Magloire * include/mailutils/mailbox.h: Remove prototype mailbox_destroy_folder(). * mailbox/mailbox.c (mailbox_destroy_folder): Remove. * comsat/comsat.c (notify_user): remove mailbox_destroy_folder(). 2001-11-17 Alain Magloire * mailbox/folder_imap.c (authenticate_imap_login): Pass the url in ticket_pop. * mailbox/mbx_pop.c (pop_get_user): Pass the url in ticket_pop() * mailbox/mbx_pop.c (pop_get_passwd): Pass the url in ticket_pop() * mailbox/ticket.c (ticket_set_pop): Change the prototype. (ticket_pop): Change the prototype. * mailbox/wicket.c (get_pass): New function get passwd. (get_user): New function get user. (myticket_create): Take filenanme as argument and save the information. (_get_ticket): Removed. (myticket_pop): Take an url in argument. * mailbox/include/auth0.h: field _pop() prototype changed. * include/mailutils/auth.h: ticket_pop and ticket_set_pop proptotype changed, add url. Include <mailutils/url.h> 2001-11-17 Alain Magloire Move util_cpystr() in the mu_ namespace. * include/mailutils/mutil.h: util_cpystr() to mu_cpystr(). * mailbox/address.c: util_cpystr() to mu_cpystr(). * mailbox/url.c: util_cpystr() to mu_cpystr(). * mailbox/mutil.c: util_cpystr() to mu_cpystr(). * mailbox/wicket.c: util_cpystr() to mu_cpystr(). 2001-11-15 Alain Magloire After exchange with Sam Roberts, it should be possible to set a stream on the message and have the message_t do the rfc822 parsing. { message_t mesg = NULL; header_t header = NULL; stream_t stream = NULL; char buffer[512]; off_t off = 0; size_t n = 0; message_create (mesg, NULL); file_stream_crete (&stream, "/home/user/mh/mesg_1"); message_set_stream (mesg, stream, NULL); stream = NULL; message_get_header (mesg, &header); header_get_stream (header, &stream); while (stream_readline (stream, buffer, sizeof buffer, off, &n) == 0 && n > 0) { printf ("%s", buffer); off += n; } message_destroy (&mesg, NULL); } * mailbox/message.c (message_header_fill): New function implements a header if there was a stream set on the message. (message_body_read): Implements the stream_read of body_t of a message if there were a stream set. (message_is_modified): Check if an object was set to message_t and flag it as modified. (message_get_body): If a stream was set on the message create a temporary stream for the body. (message_set_body): Set the message modified. (message_set_header): Set the message modified. (message_set_envelope): Set the message modified. (message_set_attribute): Set the message modified. * mailbox/include/message0.h: field hdr_buf removed. * mailbox/wicket.c (wicket_destroy): return void. * include/mailutils/auth.h: wicket_destroy () should return void. * mailbox/body.c (body_is_modified): Implemented. (body_clear_modified): Implemented. (_body_get_size0): New function. (_body_get_lines0): New function. (body_get_lines): Call _body_get_lines0(). (body_get_size): Call _body_get_size0(). (body_lines): Fall back on the stream and iterate the entire stream to find the line numbers. (body_size): Fall back on the stream for the size. * mailbox/folder_imap.c: Check if memory_stream_create() succeed and bailout if not. * mailbox/header.c (header_destroy): Free header->mstream. (fill_blurb): Remove redundant code, header_free_cache was doing the same. Implement the code in term of a memory stream to hold the temporary header blurb. (header_write): Implemented. * mailbox/include/header0.h: Remove fields temp_blurb and temp_blurb_len, we use mstream a memory stream and stream_len. * mailbox/memory_stream.c (_memory_read): Cast the offset to size_t (_memory_readline): Cast the offset to size_t. (_memory_write): Cast the offset to size_t. 2001-11-15 Sergey Poznyakoff * imap4d/append.c: Removed mailbox_destroy_folder kludge. It is not needed due to yesterday's mods of mailbox/mailbox.c. * comsat/comsat.c: Likewise. 2001-11-14 Alain Magloire * mailbox/wicket.c (_get_ticket): Reset the buffer. * mailbox/mailbox.c (mailbox_get_stream): Get the stream for the mailbox object if it is null try the folder. (mailbox_set_stream): Always set it on the mailbox object. 2001-11-14 Alain Magloire To provide an easy way to crete a ticket_t from a file, one can create a wicket_t and fetch ticket_t's for different users to set on the authority. { wicket_t (&wicket, "/home/alain/.tickets"); wicket_get_ticket (wicket, &ticket, "alain", NULL); authority_set_ticket (wicket, ticket); } * include/mailutils/auth.h: Added wicket_t prototypes functions: wicket_create(), wicket_destroy, wicket_get_ticket(). New prototype ticket_set_data () ticket_get_data () ticket_set_destroy (), ticket_set_owner(); * mailbox/wicket.c: New file, implements wicket_t. * mailbox/ticket.c: New file, implements ticket_t. * mailbox/auth.c: Implements only authority_t. * mailbox/Makefile.am: Update for ticket.c and wicket.c 2001-11-14 Sergey Poznyakoff * comsat/action.c: Expand \n only for `echo'. 2001-11-13 Alain Magloire Try to use const whenever appropriate to make it clear that a string should not be modified. Nuke some trailing spaces, thanks to emacs. Reduce the scope of functions with static. GNU ident style for switch() promote a empty line after the break; * comsat/action.c (expand_escape): size and lncount could have been use uninitialized. (expand_escape): const char *cr. (expand_line): cr == "\n\r" make it const. variable i and size unneeded. variable c initialize to zero. (expand_line): obstack_1grow() pass *p instead of c. (defaul_action): const char*. (run_user_action): fprintf () missing argument. (open_rc): const char *filename. * comsat/comsat.c (username): const char *username. (mailbox_path): const prototype. (change_user): const prototype. (notify_user): const prototype. body and header unneeded variables. (find_user): const prototype. * comsat/comsat.h: Prototype updates. 2001-11-13 Sergey Poznyakoff * lib/daemon.c: Use of errx() is a bsd-ism. * comsat/action.c: Use maxlines instead of hardcoding the default value. Exit if execv() fails. * comsat/comsat.c: Missed newline in help output. * doc/texinfo/mailutils.texi: Common index is too hard to use. Split it into Function, Program and Concept indices. * doc/texinfo/programs.texi: Added nodes for comsatd. Put @pindex and page breaks wherever needed. Fixed use of @deffn. * doc/texinfo/.cvsignore: Updated * Makefile.am: Enabled comsat directory. 2001-11-12 Sergey Poznyakoff * examples/comsat.conf: (new) A sample configuration file for comsatd utility. * examples/dot.biffrc: (new) A sample per-user biff configuration file. * comsat/action.c: Implemented exec. Fixed trivial bug in expand_escape(). * comsat/cfg.c: New keyword: allow-biffrc. * comsat/comsat.c: Likewise. * comsat/comsat.h: extern declarations. * lib/argcv.c: Ignore trailing whitespace and terminate output array with a NULL entry. * mail/mail.c: Use quotes when setting default string values. * mail/set.c: Bugfix: possible dereference of NULL pointer (on input: set var=<eol> ). 2001-11-12 Alain Magloire Support in POP3 maibox client for APOP authentication. This should work, now: #MAIL='pop://alain;AUTH=+APOP@localhost' ./frm Pop passwd: secret <--- apop secret ... * mailbox/folder_pop.c (folder_pop_get_authority): Enable APOP code. * mailbx/mbx_pop.c: Add md5-rsa.h. (_pop_apop): New function to do APOP authentication. (_pop_user): Factor some code in pop_get_user() and pop_get_passwd() to share with _pop_apop(). (pop_get_user): New function, get the user login. (pop_get_passwd): New function, get the user passwd. (pop_get_md5): New function get timestamp. * mailbox/url_pop.c: Add 2001 in Copyright. * pop3d/apop.c: Remove trailing spaces. * frm/frm.c: New option -d, --debug. To put the mailbox_t in debug mode, very practicle to watch the traffic. 2001-11-11 Alain Magloire Most daemon will share the same code to daemonize(), we use a generic one, lib/daemon.c, so any bug fix will impact the others and reduce maintainance/duplication. * lib/Makefile.am: Addition daemon.c * lib/daemon.c: New file. * pop3d/pop3d.c (pop3d_daemon_init): Use lib/daemon.c:daemon() code instead. * imap4d/imap4d.c (imap4d_daemon_init): Use lib/daemon.c:daemon code instead. * comstat/comstat.c (comstat_daemon_init): Use lib/daemon.c:daemon code instead. Remove trailing spaces. 2001-11-11 Sergey Poznyakoff * comsat/action.c: (new) User-defined actions for comsat. * comsat/Makefile.am: Added action.c to sources * comsat/cfg.c: Removed confusing comment * comsat/comsat.c: Call run_user_action instead of dumping message contents to user's tty. * comsat/comsat.h: Include mailutils headers. 2001-11-11 Alain Magloire * lib/mu_dbm.c: Add <errno.h>. Remove trailing spaces. 2001-11-11 Sergey Poznyakoff * lib/mu_dbm.c: (new) These functions provide an intermediate layer between the DBM API and mailutils' applications. * lib/mu_dbm.h: (new) Declarations for DBM support. * lib/Makefile.am: Added mu_dbm.[ch] * acconfig.h: Added DBM-related WITH- defines * configure.in: New options: --with-gdbm, --with-ndbm, --with-old-dbm * pop3d/popauth.c: (new) A tool for manipulating authentication databases. * pop3d/Makefile.am: Added popauth. * pop3d/.cvsignore: Likewise. * pop3d/apop.c: Bunch of changes due to introduction of new DBM interface. * pop3d/pop3d.h: Likewise. * comsat/Makefile.am: Added comsat.h to sources 2001-11-10 Jeff Bailey <jbailey@outpost.dnsalias.org> * pop3d/pop3d.h: Use SYSCONFDIR, not hardcoded /etc * doc/man/.cvsignore: New File * doc/Makefile.am: Add man to SUBDIRS * configure.in: Build doc/man/Makefile Provide -DSYSCONFDIR in CPPFLAGS * doc/man/pop3d.1: New File * doc/man/imap4d.1: New File * doc/man/Makefile.am: New File * pop3d/pop3d.c: Change timeout to unsigned int from size_t. Thanks to James Troup <james@nocrew.org> 2001-11-05 Alain Magloire * mailbox/mutil.c (mu_parse_imap_date_time): This one is so obvious that it is embarrasing. In a struct tm { } tv_wday [0,6] Sunday == 0. Change the Array for it to start with "Sun" instead of "Mon". 2001-11-05 Sergey Poznyakoff * configure.in: check for vsyslog * mailbox/muerror.c: New function mu_syslog_error_printer(). Removed static qualifier from default_error_printer, added mu_ prefix to it. * include/mailutils/error.h: Protos for mu_.*_error_printer functions. * imap4d/imap4d.c: Use mu_syslog_error_printer. * pop3d/pop3d.c: Likewise. * comsat/comsat.c: Likewise. Also fixed misplaced condition. 2001-11-02 Alain Magloire * mailbox/folder_imap.c: If authority is null default to user/passwd. * mailbox/folder_pop.c: If authority is null default to user/passwd. * mailbox/mbx_pop.c(pop_open): Do not try to reconnect. 2001-11-02 Sergey Poznyakoff * comsat/comsat.c: Restart on sighup when in daemon mode. Fight floods by increasing delays exponentially. Fill in `hostname' on startup. * comsat/comsat.h: include <ctype.h>. * comsat/cfg.c: Removed include <ctype.h>. 2001-11-01 Alain Magloire There were confusion, about the authority_t and the ticket_t. An authority_t is an object that implementes an authentication mechanism i.e. APOP, SASL, User/Passwd. To retrieve or get information from the client/user, authority_t will use the ticket_t, it will call ticket_pop (). For example, on an authority_t object that implements the user/passwd mechanism ticket_pop () will be call two times once for the user and the other for the passwd, by the authority_t object. So far so good, but the problem here was we had mailbox_{g,s}et_ticket(), folder_{g,s}et_ticket() and mailbox_{g,s}et_authority() and folder_{g,s}_authority(). For example for a ticket , depending on when xx_set_ticket () was done, a ticket_t could have been set on the mailbox_t structure or on the folder_t structure. This was leading to use the wrong one, folder->ticket or mailbox->ticket. Same problem occurs for authority_t. To clear this up, ticket_t can only be set on the authority_t and autority_t can only be on a folder. Having only one way to get at the authority or at the ticket fix the race conditions: { // No error checking is done. mailbox_t mbox; folder_t folder; authority_t auth; ticket_t ticket; .. .. // Setting the ticket mailbox_create (&mbox, where); mailbox_get_folder (mbox, &folder); folder_get_authority (folder, &auth) authority_set_ticket (auth, ticket); .... } * include/mailutils/mailbox.h: Remove mailbox_{g,s}et_ticket(). mailbox_{gs}et_authority (). * include/mailutils/folder.h: Remove folder_{gs}et_authority(). * mailbox/mailbox.c (mailbox_get_folder): New function. (mailbox_get_ticket): Removed. (mailbox_set_ticket): Removed. (mailbox_set_authority): Removed. (mailbox_get_authority): Removed. * mailbox/folder.c (folder_get_ticket): Removed. (folder_set_ticket): Removed. (folder_destroy): Removed destruction of ticket. * mailbox/folder_imap.c (folder_imap_get_authority): New function. (_folder_imap_init): Create authority. * mailbox/folder_pop.c (folder_pop_get_authority): New function. (folder_pop_open): New function. (folder_pop_close): New function. (_folder_pop_init): Create authority. * mailbox/mbx_imap.c (_mailbox_imap_init): Remove the creation of authority here, moved to _folder_imap_init(). * mailbox/mbx_pop.c (_mailbox_pop_init): Remove the creation of authority here, moved to _folder_imap_init(). * messages/messages.c (messages_count): Argument should be const. 2001-11-01 Sergey Poznyakoff * configure.in: Added check for utmp.h & utmpx.h * mailbox/mutil.c: New function: mu_normalize_path() moved from imap4d/util.c * include/mailutils/mutil.h: Added declaration for mu_normalize_path(). * imap4d/imap4d.h: Removed declaration of util_normalize_path(). * imap4d/login.c: Use LOG_FACILITY instead of LOG_MAIL. Use mu_normalize_path(). * imap4d/namespace.c: Use mu_normalize_path(). * imap4d/util.c: Removed declaration of util_normalize_path(). * mailbox/mailbox.c: mailbox_get_stream(): Fixed funny bug, (introduced Dec 4, 2000). * mailbox/mbx_imap.c: Use ENOSYS instead of ENOTSUP. * comsat/: New directory. An implementation of comsat daemon. * comsat/Makefile.am: (new) * comsat/.cvsignore: (new) * comsat/comsat.c: (new) Main module * comsat/cfg.c: (new) Configuration and ACL routines. * comsat/comsat.h: (new) Declarations for comsat. 2001-11-01 00:15 sroberts * TODO: Added suggestion for a mailcap based file viewer. 2001-10-31 Alain Magloire * messages/message.c (messages_count): getenv ("MAIL") may return NULL. In this case we were trying to printf (" ..%s\n", NULL); GNU/Linux seems to cope with it but QNX/Neutrino sigsegv miserably. Fix the code by getting the url of the mailbox and calling url_to_string(). * mailbox/mbx_default.c: If the argument is NULL __or__ an empty string check MAIL and FOLDER environment. * imap4d/namespace.c: Put namespace_enumerate() and namespace_enumerate() static scope. * mail/msgset.y: search "mail.h" in the current dir. 2001-10-31 Alain Magloire * mailbox/mbx_imap.c (delete_to_string): Try to turn a sequence of number to IMAP msgset. Call add_number for the work. (add_number): New function to add number to string for IMAP msgset. 2001-10-30 Alain Magloire * mailbox/body.c: Remove unneeded prototype. * mailbox/mbx_imap.c (mailbox_imap_close): Clear the callback string structure. (imap_scan0): Clear the callback string structure. (imap_append_message): Remove unused variable. 2001-10-30 Sam Roberts * mailbox/: folder_imap.c, mbx_imap.c, include/imap0.h: Implemented AUTH=ANON, the anonymous SASL mechanism. * TODO: Updated AUTH=ANON todo, and added some wish-list utilities. * doc/rfc/: rfc2195.txt, rfc2222.txt, rfc2444.txt, rfc2595.txt, rfc2808.txt, rfc2831.txt, sasl-mechanisms: added SASL rfcs and registry * examples/.cvsignore: mbox-check * examples/: Makefile, mbox-check.c: Added new example, mbox-check.c 2001-10-30 Alain Magloire * acconfig.h: #define ssize_t. * configure.in: Add AC_CHECK_TYPE(ssize_t, int); 2001-10-26 Sergey Poznyakoff Fixed behavior in send mode when the stdin is not a terminal (i.e. when used as mail addr@dom.ain < message): do not ask for cc, bcc, and do not echo the contents of the message (when compiled with readline). * mail/mail.c: Use ml_readline(). Check for `!interactive' and force appropriate settings _after_ sourcing mail.rc files. Force `set quiet' if in non-interactive mode. * mail/mail.h: Declaration for ml_readline(). * mail/mailline.c: New functions ml_readline_internal(), ml_readline(). * mail/send.c: Use ml_readline(). * mail/source.c: Do not complain if the file does not exist. 2001-10-24 Alain Magloire * configure.in: Check for getdelim(). * lib/getline.c: change the return values from int to ssize_t to follow GNU LibC. 2001-10-23 Alain Magloire The message_t object makes no guaranty about the size and the lines that it returns, if it is pointing to non-local file messages, i.e POP3, IMAP4, the entire message may not have been dowloaded yet. IMAP is very susceptible on the size, example: A003 APPEND saved-messages (\Seen) {310} Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) From: Fred Foobar <foobar@Blurdybloop.COM> Subject: afternoon meeting To: mooch@owatagu.siam.edu Message-Id: <B27397-0100000@Blurdybloop.COM> MIME-Version: 1.0 ...... (1) If the IMAP4 server does not get the right size advertise in the string literal, it will misbehave. (2) Since we are assuming that the message will be in (unix)native file system format meaning ending with NEWLINE, we will have to do some calculations about the RFC822.SIZE of the message. (3) As pointed above, it is not possible to rely on message_size() nor message_lines() to return the right count and even missing by one can be deadly. So we download the message to a floating message to guaranty that we know the exact size when transmitting it back the IMAP server, this is the only sane thing to do IMHO. We could always be smart; check if the message is local (i.e from the local file system: mbox, mh, etc ..) and was not modified. If those two requirements are true we can assume that the sizes/lines are right. But for now do it simple, and create a temporary file/message_t. * mailbox/mbx_imap.c (imap_append_message): If the message is from the same IMAP server optimize by doing COPY. If not call imap_append_message0() save the original message to a floating message i.e. file, and use that floating message for the append. Temporary message is destroyed when finish. The drawback is this function is no long nonblocking safe. 2001-10-23 Alain Magloire * mailbox/body.c: body_lines () nd body_size () were not properly overriden given the wrong size and line number, fixed. * mailbox/mbx_imap.c (mailbox_imap_close): Not to send another SELECT but rather just close the mailbox if not selected. (imap_scan0): If there is no messages in the mailbox no need to send the FETCH 1:*. * mailbox/message.c (message_is_modified): Protect against null pointer. * mailbox/mutil.c: Add <errno.h> if we use errno directly. (mu_get_user_email): size not used, nuked. * TODO: Some stuff todo 8). 2001-10-23 Sergey Poznyakoff * mailbox/mutil.c: New function mu_get_user_email. * include/mailutils/mutil.h: Prototype for mu_get_user_email. * mail/alt.c: Determine full user email address (mail_set_my_name). * libmu_scm/mu_address.c: New function mu-username->email, deduces user's email from his username. * libmu_scm/mu_message.c: New function mu-message-destroy. mu_scm_message_free(): Destroy the underlying message if its owner is NULL. * guimb/scm/sieve-core.scm: Use mu-username->email to initialize sieve-my-email. * guimb/scm/redirect.scm: Use close-pipe instead of close-output-port. Use mu-message-destroy. * guimb/scm/reject.scm: Delete message after sending reject notification. MH: Implemented user profiles. * mh/mh.h: New prototypes. * mh/mh_argp.c: Honor `progname:' entries in the user's profile. * mh/mh_init.c: Read user's profile. Use values from there instead of hardcoded ones. * mh/inc.c: Do not call mh_init() explicitly. * mh/scan.c: Likewise. 2001-10-22 Jeff Bailey <jbailey@outpost.dnsalias.org> * doc/texinfo/Makefile.am: Remove version.texi, it's implied. * libmu_scm/Makefile.am: Clean @GUILE_PROCEDURES_TXT@ * guimb/Makefile.am: Clean @GUILE_PROCEDURES_TXT@ 2001-10-21 Sergey Poznyakoff Changes for compatibility with automake 1.5: * guimb/Makefile.am: Restored -I. * mh/Makefile.am: Renamed ALL_LDADD to mh_LIBS. 2001-10-20 Alain Magloire * configure.in: Set to 0.0.9c. * doc/texinfo/mbox.texi: Updated the docs for mbox(Unix). * doc/texinfo/pop.texi: Updated the docs for pop3. * imap4d/expunge.c: Bug: Expunge was not sending the untag "* %d EXPUNGED" for message deleted. Call imap4d_sync () which will do the right thing. * imap4d/noop.c: Bug: It should call imap4d_sync () to notify the client of any changes. * imap4d/sync.c (notify_deleted): Typo should be EXPUNGED with a D. (imap4d_sync): Bug: Checked also if the number of messages changed. * mailbox/folder_imap.c (imap_flags): Bug: Rewrite it to be generic and sets the flags for the attribute. (imap_fetch_flags): Call imap_flags(). (imap_permanentflags): Call imap_flags(). * mailbox2/include/mailutils/mbox.h: Update prototypes. * mailbox2/include/mailutils/sys/mbox.h: Update prototypes. * mailbox2/include/mailutils/pop3.h: Update prototypes. * mailbox2/mbox/mbox_expunge.c (mbox_expunge): Calls mbox_expunge0 (). (mbox_save): Calls mbox_expunge0(). * mailbox2/mbox/mbox_scan.c (mbox_scan): Calls mbox_scan0 (). (mbox_count): Calls mbox_scan0(). * mailbox2/pop3/pop3_capa.c: Provide a special iterator. * mailbox2/pop3/pop3_lista.c: Provide a special iterator. * mailbox2/pop3/pop3_uidla.c: Provide a special iterator. 2001-10-19 Sergey Poznyakoff MH inc is fully functional: * mh/inc.c: Implemented -audit. * mh/mh_init.c: New functions mh_audit_open(), mh_audit_close(). * mh/mh.h: Protos for new functions. * mh/mh_format.c: Minor bugfix in builtin_mbox(). * guimb/Makefile.am: Removed superfluous -I. 2001-10-19 Sergey Poznyakoff Implemented saving of MH context. * mh/inc.c: Fixed truncate option. Implemented -changecur. The only feature inc lacks so far is -audit. * mh/mh_format.c: Minor fix in builtin_match(). * mh/mh_getopt.c: Fixed option recognition heuristics. * mh/mh_init.c: New globals: ctx_name -- keeps full context file name, ctx_header -- keeps current context (as a MU header). mh_init(): Use new globals. New functions: mh_save_context, mh_write_context_file, mh_check_folder, mh_getyn. * mh/mh.h: Prototypes for new functions. 2001-10-17 Sam Roberts * README-alpha : Update cvs repository path. 2001-10-17 Sergey Poznyakoff After discussion with Jeff, removed maintainer-mode quirks and introduced --enable-debug switch. * configure.in: Use MU_DEBUG_MODE. * m4/maintainer.m4: removed. * m4/debug.m4: (new) Handle --enable-debug option. When the option is specified, adds -ggdb to the invocation of gcc, and removes any optimization directives from CFLAGS. * m4/Makefile.am: Removed maintainer.m4, added debug.m4 and regex.m4 (committed earlier, but apparently forgotten to add). * guimb/Makefile.am: Removed MAINTAINER_MODE conditionals. * libmu_scm/Makefile.am: Likewise. * mail/Makefile.am: Likewise. * imap4d/imap4d.h: Added proto for strtok_r. * .cvsignore: Updated (config.sub, ltconfig, etc.) 2001-10-16 Alain Magloire According to rfc2060 the minimum timeout is 30 minutes. But it is not unusual to see server with a shorter timeout. When the timeout occurs, the server sends a BYE. To catch this all functions in folder_imap.c and mbx_imap.c use a proloque folder_open() or imap_messages_count to check if the server timedout and reconnect. This is not bullet proof since the "* BYE" will be act upon on the second request, the first is where we catch "* BYE". On mailbox2 this behaviour will be disable/enable with a property and make more reliable, so client set the property "AUTORECONNECT". * mailbox/folder_imap.c: Prologue to must functions calling folder_open(). * mailbox/mbx_imap.c: Proloque to must functions calling folder_open() or imap_messages_count. (section_name): Buglet passed the wrong argument to sizeof(). For debugging purposes, to see the traffic * mailbox/folder_imap.c: Print to stderr the command sent to the IMAP server. #define DEBUG_SHOW_COMMAND 1 Print to stderr the responses received from the IMAP server. #define DEBUG_SHOW_RESPONSE 1 Print to stderr the literal/quoted string received from the IMAP server. #define DEBUG_SHOW_DATA 1 2001-10-16 Sergey Poznyakoff * doc/texinfo/mailutils.texi: Eliminated overfull \hboxes in printed output. * doc/texinfo/programs.texi: Likewise. Use @ref instead of @xref wherever appropriate. 2001-10-15 Alain Magloire * mailbox/sendmail.c: Use vfork() instead of fork(). In a multithreaded environment, fork () may not be supported. Since we do fork()/exec(), vfork() will do fine. This was trigger by QNX/Neutrino, where fork()ing is not supported after threads have been created. 2001-10-15 Sam Roberts * doc/texinfo/programs.texi: Typo and semantics corrections. 2001-10-15 Alain Magloire * mailbox/mbx_imap.c (imap_message_readline imap_body_readline): Bad analysis on my part. Functions removed. * configure.in: Bump to 0.0.9b * TODO: Put a note apropos mailbox2. 2001-10-14 Alain Magloire * mailbox/mbx_imap.c(imap_message_readline imap_body_readline): The buffer was not null terminated if no newline was found. 2001-10-14 Alain Magloire The code for IMAP, is a pain, the rewrite should clean all those hacks. Something to remember for the mailbox2 is to do some smart caching, the current buffered stream is not good enough. * configure.in: VERSION is set to 0.0.9a for the alpha. * frm/frm.c: Protype for usage(). get_personal() should use const char *. * mail/mail.c (main): Use mailbox_scan() instead of mailbox_messages_count () it is faster for IMAP. * mailbox/mbx_imap.c(imap_get_message0): Remove the stream_setbufsiz() it is no longer used. (imap_message_readline imap_body_readline): Bug fix, readline will only consume up to '\n' even though the buffer is bigger. So we have to adjust the offset/lines/size to reflect what we consume. This is not very good for example doing: { off_t offset = 14; char buffer[512]; stream_readline (stream, buffer, sizeof buffer, offset, NULL); ... } Will send to the impap server. C: g445 FETCH 4 BODY.PEEK[2]<0.2048> S: * 4 FETCH (BODY[2]<0> {739} S: g445 OK FETCH completed This is waste since the first line is only 37 bytes. We will have to come up on the second API with some smart caching. * mailbox/memory_stream.c (_memory_write): Nasty bug was not updating the stream size. * mailbox/stream.c(stream_readline): Take care of known case where the buflen is 0 or 1. 2001-10-14 Alain Magloire The code for property.c has been changed for a more simple approach, it is the same approach as mail/util.c(environment) settings. The old code was simply overkill, property_t was seldomly used, if at all, no need for heavy hash table and all that jazz. * mailbox/property.c: New code, the same as mail/util.c environment. * mailbox/mbx_mbox.c (_mbx_init): Remove property_add_defaults() etc .. no longer in use in the initialisation code. * mailbox/mbx_imap.c: Likewised * mailbox/mbx_pop.c: Likewised * mailbox/mbx_mh.c: Likewised * mailbox/header.c: Removed property code. * mailbox/body.c: Removed property code. * mailbox/message.c: Removed property code. * mailbox/filter.c: Changed the code according to the new property_t. * mailbox/filter_rfc822.c: Changed the code according to the new property_t structure. * include/mailutils/header.h: Removed property. * include/mailutils/body.h: Removed property. * include/mailutils/message.h: Removed property. * include/mailutils/property.h: Removed property_add_defaults() property_set_valued () takes one more argument for overwrite. * mailbox/include/header0.hy: Removed property field. * mailbox/include/body0.hy: Removed property field. * mailbox/include/message0.hy: Removed property field. * mailbox/mailbox.c(mailbox_get_property mailbox_set_property): Changed Property code. * mailbox/mailer.c(mailer_set_property mailer_get_property): Changed Property code. * mailbox/folder_imap.c (imap_search imap_expunge imap_status): Stubs SEARCH is not implemented yet, STATUS neither and EXPUNGE is not used. * mailbox/list.c: Renamed variable index to indx to shutup gcc whos confusing with index() when warning level was high. * mailbox/md5-rsa.c: Likewised. * mailbox/mailbox.c (mailbox_get_debug mailbox_set_debug): The debug object was being set on the folder not the mailbox. * mailbox/mbx_imap.c (imap_messages_count): Attempt to reconnect if the connection timeout. Is this wise? (imap_scan0): Moved gut of imap_scan() code here. (imap_scan): Stub calling imap_scan0() with notification enable. (imap_expunge): After CLOSE, call imap_scan0() wiht notification disable. Memory leak in parse822, this was a real pain to trace, because of the recursive nature of the algorithm. Sam should buy me a beer for this. * mailbox/parse822.c: Used more assert to catch errors. (parse822_group): phrase was not free() in case of failure. (parse822_mail_box): Dead "else if" branch removed and free phrase. (parse822_route): accumulator was not being freed. (parse822_local_part): Moved down st_free(more). (parse822_domain): Moved down st_free(more). 2001-10-14 Sergey Poznyakoff Small fixes: * frm/frm.c: Do not output extra newline when running with --field option. * mail/reply.c: Do not prefix subject line with Re: if it already starts with it * mail/send.c: Handle ~x escape properly. * mail/table.c: Removed entry for ~x: it is handled by send.c * mail/var.c: Delimit addresses with space (~t, ~c and ~b escapes). Removed var_exit(). * guimb/main.c: Fixed typo in --help output. * guimb/scm/README: (new). Reorganized /doc. Added some documentation (primarily, program.texi) * configure.in: Added doc/*/Makefile * doc/*.texi, doc/*.rfc: removed. * doc/Makefile.am: Reorganized doc structure * doc/.cvsignore: Likewise. * doc/texinfo: New directory * doc/texinfo/Makefile.am: (new) * doc/texinfo/.cvsignore: (new) * doc/texinfo/.ispell_english: (new) User dictionary for spell-checking docs. * doc/texinfo/address.texi: Moved from .. * doc/texinfo/attribute.texi: Likewise. * doc/texinfo/auth.texi: Likewise. * doc/texinfo/body.texi: Likewise. * doc/texinfo/c-api.texi: Likewise. * doc/texinfo/encoding.texi: Likewise. * doc/texinfo/envelope.texi: Likewise. * doc/texinfo/ex-address.texi: Likewise. * doc/texinfo/ex-url.texi: Likewise. * doc/texinfo/folder.texi: Likewise. * doc/texinfo/framework.texi: Likewise. * doc/texinfo/headers.texi: Likewise. * doc/texinfo/imap4.texi: Likewise. * doc/texinfo/iterator.texi: Likewise. * doc/texinfo/locker.texi: Likewise. * doc/texinfo/mailbox.texi: Likewise. * doc/texinfo/maildir.texi: Likewise. * doc/texinfo/mailer.texi: Likewise. * doc/texinfo/mailutils.texi: Likewise. * doc/texinfo/mbox.texi: Likewise. * doc/texinfo/message.texi: Likewise. * doc/texinfo/mh.texi: Likewise. * doc/texinfo/mime.texi: Likewise. * doc/texinfo/nntp.texi: Likewise. * doc/texinfo/parse822.texi: Likewise. * doc/texinfo/pop3.texi: Likewise. * doc/texinfo/programs.texi: Likewise. * doc/texinfo/sendmail.texi: Likewise. * doc/texinfo/sfrom.c.texi: Likewise. * doc/texinfo/smtp.texi: Likewise. * doc/texinfo/stream.texi: Likewise. * doc/texinfo/url.texi: Likewise. * doc/texinfo/version.texi: Likewise. * doc/rfc: New directory * doc/rfc/Makefile.am: (new) * doc/rfc/.cvsignore: (new) * doc/rfc/rfc1731.txt: Moved from .. * doc/rfc/rfc1734.txt: Likewise. * doc/rfc/rfc1738.txt: Likewise. * doc/rfc/rfc1939.txt: Likewise. * doc/rfc/rfc1957.txt: Likewise. * doc/rfc/rfc2045.txt: Likewise. * doc/rfc/rfc2046.txt: Likewise. * doc/rfc/rfc2047.txt: Likewise. * doc/rfc/rfc2049.txt: Likewise. * doc/rfc/rfc2060-errata: Likewise. * doc/rfc/rfc2060.txt: Likewise. * doc/rfc/rfc2088.txt: Likewise. * doc/rfc/rfc2111.txt: Likewise. * doc/rfc/rfc2192.txt: Likewise. * doc/rfc/rfc2193.txt: Likewise. * doc/rfc/rfc2221.txt: Likewise. * doc/rfc/rfc2245.txt: Likewise. * doc/rfc/rfc2298.txt: Likewise. * doc/rfc/rfc2342.txt: Likewise. * doc/rfc/rfc2368.txt: Likewise. * doc/rfc/rfc2384.txt: Likewise. * doc/rfc/rfc2449.txt: Likewise. * doc/rfc/rfc2821.txt: Likewise. * doc/rfc/rfc2822.txt: Likewise. * doc/rfc/rfc3028.txt: Likewise. * doc/rfc/rfc821.txt: Likewise. * doc/rfc/rfc822.txt: Likewise. 2001-10-13 Alain Malgoire * mail/mail.c: Possibility to enable debuging output. It should probably be a runtime option via set debug=1 or something for now it is disable between if (0) {...}. More cleanup in the IMAP code. A memory stream buffer is use to save the string literal sended by the IMAP server. The allocation is handle by the memory_stream which simplifies the code. * folder_imap.c (folder_imap.c): Create a memory stream to hold the literal or quoted string send by the IMAP server. (folder_imap_list folder_imap_lsub): There is no callback field the struct folder_list is in struct _f_imap now. (imap_literal_string imap_quoted_string imap_string): Use the memory string stream to save the result. (imap_body): Still need to be clean, but creates the cache header when doing the scan. (imap_parse): Do not use alloca(). 2001-10-13 Jeff Bailey * guimb/Makefile.am: Remove GNU Makeism. * libmu_scm/Makefile.am: Remove GNU Makeism. 2001-10-12 Jeff Bailey * libmu_scm/Makefile.am: Fixes for RO srcdir. * guimb/Makefile.am: Fixes for RO srcdir. 2001-10-11 Alain Magloire A small cleanup of the IMAP code. * mailbox/folder_imap.c (imap_body): Destry the cache header if it was previously set on a SCAN. * mailbox/mbx_imap.c (delete_to_string): New function, to generate a string of IMAP message numbers. (imap_expunge): use delete_to_string; (attribute_string): Removed. (flags_string): Removed. (flags_to_string): Replace attribute_string() and flags_string(). (message_operation): Rename to fetch_operation. * mailbox/include/imap0.h(struct _f_imap): field func and id removed, never used. 2001-10-11 Alain Magloire * mailbox/folder_imap.c (imap_quoted_string): Free the buffer. (imap_string): Free the buffer. (imap_body): Check if we already have the fheader header. (imap_scan): Forgot the break in the switch. 2001-10-11 Alain Magloire In order to boost performance, when doing the scan, we use the approach of downloading a subset of the header from all of messages. The way it was done before was that the headers were requested one by one per message. This was causing performance issues because we were doing a lot of small transactions on the TCP/IP stack. By bundling the entire thing in one request "a0000 FETCH 1:* (FLAGS RFC822.SIZE BODY.PEEK[HEADER.FIELDS(..)])\r\n" there were less transcations and the speed was increase by a factor of 100+. The Imap code folder_imap.c and mbx_imap.c is now messy. The rewrite in mailbox2 should clean this up though. * mailbox/folder_imap.c (imap_quoted_string): Allocated the memory instead. (imap_body): If we were doing the scan free the memory and create the cache header. (imap_fetch): Create the message if was not done, important for the scan. * mailbox/mbx_imap.c (imap_scan): Bundle one big request to fetch as much information as possible. (message_operation): Free the buffer when done. * mailbox/include/imap0.h: Add IMAP_SCAN states. * mailbox/file_stream.c (_file_readline): It seems that fgets() can not handle binary data. Try to do our best. 2001-10-11 Alain Magloire * mailbox/header.c (header_get_fvalue): When it fails set the number of byte written to 0. (header_get_value): Likewised. * mailbox/mbx_imap.c (imap_envelope_sender): Go through header_get_value() to fetch the "Sender" field, it may be cache. (imap_header_get_fvalue): Put parenthesies around the FETCH, the WU-IMAPD likes it that way. 2001-10-10 Alain Magloire * mailbox/mbx_pop.c (_mbox_pop_init): Authority is set on the folder. For pop this a little hackish, since there is no proper folder. As a hack we set for the pop folder the actual mailbox as data pointer. (pop_user): the owner of the authority is the folder. 2001-10-08 Alain Magloire * mailbox/mbx_mbox.c (mbox_expunge0): New function. Move all the previous mbox_expunge() to mbox_expunge0() with a new argument deciding whether or not to remove messages set deleted. (mbox_save_attributes): Stub calling mbox_expunge0(). (mbox_expunge): Stub calling mbox_expunge0() * mailbox/mbx_mh.c: Provide a prototype for mh_message_number() there is no provision for it in the current Mailbox API. * mailbox/mbx_imap.c (imap_message_lines): If the message_size is not set fallback on body_lines and header_lines. * mail/print.c: Lines number are not always known for example for POP or IMAP, it is not known until the mail is dowloaded so take a guess base on the size. 2001-10-08 Sergey Poznyakoff * mail/z.c: Bugfix: Did not display the last message when the number of lines in last page was less than pagelines. * mailbox/mbx_pop.c: Use ENOSYS instead of ENOTSUP. * mh/mh_format.c: Fixed memory leak in strobj_free(). 2001-10-05 Alain Magloire * mailbox/folder_imap.c (imap_flags): Bailout at the matching LPAREN. * mailbox/header.c (header_get_fvalue): Return 0 as the number of byte returned by the last argument, even when no header field matched. (header_get_value): Likewised. * mailbox/mbx_imap.c (imap_header_get_fvalue): Also cache the message size and the FLAGS. (imap_message_size): If we already have the size do not request it again. 2001-10-05 Sergey Poznyakoff * guimb/scm/Makefile.am: Added reject.scm. * mailbox/parse822.c: (parse822_word): Additional check for qstr != NULL: parse822_quoted_string() sometimes returns EOK and does not fill qstr (e.g. when parsing empty string: "") 2001-10-04 Alain Magloire * imap4d/select.c(imap4_select_status): According to RFC2060 There is no parenthesis when we send the UIDVALIDITY/UNSEEN. * mailbox/header.c (header_free_cache): New function. (fill_blurb): Call header_free_cache to release memory. (header_destroy): Move the code to header_free_cache(). (header_set_fvalue): Accept a NULL value, it will permanent failure i.e. the header does not exist. (header_get_value): Check the cache provided by the header object then the cache from _get_fvalue() and fall back to downloading the entire header. * mailbox/mbx_imap.c (imap_hader_get_fvalue): Implement a cache in IMAP for the most use headers like "FROM, SUBJECT ....". * mailbox/include/imap0.h: New field in _m_imap to hold the header cache. * mailbox/mapfile_stream.c: signed and unsigned cast. 2001-10-03 Alain Magloire * mailbox/mbx_imap.c (imap_attr_set_flags): Do not send the \\Delete flag and just keep it locally. The expunge will take care of resending it. (imap_attr_unset_flags): Likewised. 2001-10-03 Sergey Poznyakoff * mailbox/attribute.c: Fixed funny bug in attribute_{set,clear}_modified. 2001-10-01 Alain Magloire * mailbox2/attribute.c: Add user flags. * mailbox2/dattribute.c: Add user flags. To be compatible with the old mailbox, all stream read and write take an offset. Removed stream_seek () and add stream_is_seekable() instead. * mailbox2/stream.c: Likewised. * mailbox2/bstream.c: Likewised. * mailbox2/fdstream.c: Likewised. * mailbox2/fstream.c: Likewised. * mailbox2/mapstream.c: Likewised. * mailbox2/memstream.c: Likewised. * mailbox2/tcpstream.c: Likewised. * mailbox2/include/mailutils/error.h: Add EBADFD. * mailbox2/include/mailutils/mbox.h: New prototypes. * mailbox2/include/mailutils/sys/mbox.h: New prototypes. * mailbox2/mbox/*.c: Finish implementation. 2001-09-26 Alain Magloire * mailbox2/mbox/mbox_append.c: Implemented, first draft. 2001-09-23 Alain Magloire First draft of the mailbox/mbox2. Not functional. Changes are too numerous to enumarate. * mailbox2/mbox/*.[ch]: First mbox implementation. * mailbox2/mbox/Makefile.am: New file. 2001-09-22 Alain Magloire In order to provide inheritance, it is necessary to make the base functions/methods visible so the extended object could reuse some base methods if necessary. Inheritance is possible because we always add to the end of the vtable structure new functions. For example, mime_t object will be also a message_t. and it will be possible to do { mime_t mime; header_t header; ... message_get_header ((message_t)mime, header); } Another example is tcpstream(socket stream) extends fdstream(file descriptor stream); Also the name of the functions have change to match there purpose. * mailbox2/Makefile.am: lockfile.c added. * mailbox2/bstream.c: Reoganisation to make the functions visible. * mailbox2/dattribute.c: Likewise. * mailbox2/dotlock.c: Likewise. * mailbox2/fdstream.c: Likewise. * mailbox2/fstream.c: Likewise. * mailbox2/mapstream.c: Likewise. * mailbox2/memstream.c: Likewise. * mailbox2/pticket.c: Likewise. * mailbox2/sdebug.c: Likewise. * mailbox2/tcpstream.c: Likewise. * mailbox2/include/mailutils/Makefile.am: lockfile.h added. * mailbox2/include/mailutils/attribute.h: Add the new prototypes. * mailbox2/include/mailutils/mbox.h: Add the new prototypes. * mailbox2/include/mailutils/stream.h: Add the new prototypes. * mailbox2/include/mailutils/sys/Makefile.am: dattribute.h lockfile.h mapstream.h pticket.h added. * mailbox2/include/mailutils/sys/bstream.h: Add new prototypes. * mailbox2/include/mailutils/sys/fdstream.h: Likewise. * mailbox2/include/mailutils/sys/fstream.h: Likewise. * mailbox2/include/mailutils/sys/mbox.h: Likewise. * mailbox2/include/mailutils/sys/memstream.h: Likewise. * mailbox2/include/mailutils/sys/sdebug.h: Likewise. * mailbox2/include/mailutils/sys/tcpstream.h: Likewise. 2001-09-20 Sergey Poznyakoff * frm/frm.c: Print newline not depending on the presence of Subject header. * mh/mh_fmtgram.y: Builtin functions return their values in arg_num,arg_str. reg_num,reg_str gets set only when reducing to pitems. Fixed if-blocks to save the result of the last evaluated conditional to reg_num. * mh/mh_format.c: Builtin functions return their values in arg_num,arg_str. Compress whitespace only in component escapes. * mh/mh_init.c: mh_read_formfile(): Handle end-of-line comments and '\' line continuation. 2001-09-19 Alain Magloire * mailbox2/debug.c: Remove mu_debug_printv() and only keep mu_debug_print(). * mailbox2/sdebug.c (mu_debug_stream_create): New function replace mu_debug_stdio_create(). * mailbox2/fdstream.c (_fds_desroy): Do not close the stream when destroying, it should have been done explicitely with stream_close (); * mailbox2/fstream.c (_fs_desroy): Do not close the stream when destroying, it should have been done explicitely with stream_close (); * mailbox2/mapstream.c (_map_desroy): Do not close the stream when destroying, it should have been done explicitely with stream_close (); * mailbox2/memstream.c (_memory_desroy): Do not close the stream when destroying, it should have been done explicitely with stream_close (); * mailbox2/tcpstream.c (_tcp_desroy): Do not close the stream when destroying, it should have been done explicitely with stream_close (); 2001-09-18 Sam Roberts * mailbox/mbx_pop.c: Check url authentication type at initialization to trap invalid ones early. * mailbox/: mbx_mbox.c, mbx_mh.c: The pthread headers seem to define things that make the system headers not prototype some non-POSIX but essential APIS, so I moved them (on QNX6). * mailbox/url.c: Set zero-length strings to NULL. * mailbox/: url_imap.c, url_pop.c: Check harder for URLs that are not invalid for the particular scheme. * mailbox/auth.c: authority_authenticate() was returning success if authority was NULL, this is an error for all the other authority_* APIs, now it is here, as well. 2001-09-18 Sergey Poznyakoff * mh/mh.h: Changed proto of mh_read_formfile(). Thanks to Alain for noticing. * mh/inc.c: Likewise. * mh/scan.c: Likewise. * mh/mh_init.c: Likewise. 2001-09-18 Sergey Poznyakoff * mailbox/mbx_mh.c: Optimized for speed. _mh_message_save(): scan the message while saving it. If expunge==0, do not create temporary, operate directly on the message file instead. mh_append_message(): Do not rescan appended message. mh_scan_message(): Do not rescan the message if it's not changed since last scan. * mh/.cvsignore: Updated. * mh/mh_argp.c: Pass '+' key when handling +folder option. * mh/mh_getopt.c: Handle +folder. * mh/inc.c: Handle '+' key. * mh/scan.c: Likewise. 2001-09-17 Alain Magloire Pop3 now has a debug object, mu_debug_t, to follow the protocol exchanges between the library and the server. * mailbox2/pop3/*: Add debug prints in all. * mailbox2/sdebug.c: New entry. * mailbox2/debug.c: New entry. * mailbox2/Makefile.am: Add debug object * mailbox2/include/mailutils/Makefile.am: Add debug.h * mailbox2/include/mailutils/sys/Makefile.am: Add debug.h and sdebug.h * mailbox2/include/mailutils/debug.h: New file. * mailbox2/include/mailutils/sys/debug.h: New file. * mailbox2/include/mailutils/sys/sdebug.h: New file. * mailbox2/fdstream.c: Bug in fdstream do not call FD_SET if the file descriptor is -1; * mailbox2/tcpstream.c: Bug in fdstream do not call FD_SET if the file descriptor is -1; 2001-09-17 Sergey Poznyakoff * mail/mailline.c: fixed declaration of ml_reread, it did not match the changed proto. * acconfig.h: Added HAVE_OBSTACK * mailbox/mbx_mbox.c: _mh_next_seq(): add 1 to the last used sequence number. mh_append_message(): missed assignment to mhd member of struct _mh_data. mh_message_number(): new function. It is the only way to get the message sequence number. Further changes to mh/: Implemented inc command. Added missing options to scan. * mh/Makefile.am: Added inc.c. Restructured .*_LDADD assignments. * mh/mh.h: Extern declarations for current_folder, current_message, mh_list_format, etc. * mh/mh_format.c: builtin_msg(): return sequence number of the message, not its ordinal number in mailbox. builtin_cur(): implemented. * mh/mh_init.c: New globals: current_folder, current_message, mh_list_format, etc. mh_init(): initialize current_folder and current message. mh_read_context_file(), mh_read_formfile(): new functions. * mh/scan.c: Changed initialization of format_str. Removed scan_folder: use current_folder instead. Implemented -form and -header options. Use \f to clear screen if stdout is not a tty. * mh/inc.c: (new) Implementation of inc command. 2001-09-16 Alain Magloire * doc/mbox.texi: Starts to document the concrete Unix mbox API. * doc/pop3.texi: Typos. * mailbox/mbx_mh.c: Initialised variables. Typecast to void expunge since it is never used. * mail/delete.c : Typo. 2001-09-16 Alain Magloire This is after a exchange with Dave Inglis and Sam Roberts. Basically they recommand to drop the XX_release() functions and only to keep XX_create (), XX_destroy (). We have simple reference count strategy for memory management. * mailbox2/* : Way too much to enumerate. * mailbox2/refcount.c: New file * mailbox2/include/mailutils/refcount.h: New file * mailbox2/include/mailutils/sys/refcount.h: New file * mailbox2/fdstream.c: stream_fd_create (). 2001-09-15 Alain Magloire The exercise is to crank up the warnings from gcc and cleanup 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. 2001-09-14 Sergey Poznyakoff * mailbox/mbx_mh.c: Properly handle messages with null body. Fixed bug in cyclic stream pool. Lowered MAX_OPEN_STREAMS limit. It probably should be configurable. A framework for porting MH utilities. Scan utility is in working order, except that it ignores -form and -header options. * configure.in: Check for presense of GNU obstack functions. * lib/Makefile.am: Added obstack.[ch] * lib/obstack.c: (new) * lib/obstack.h: (new) * mh: (New directory) Implementation of MH commands. * mh/Makefile.am: (new) * mh/.cvsignore: (new) * mh/mh.h: (new) Main header for mh functions. * mh/mh_argp.c: (new) Coexistence between GNU long options, traditional UNIX-style short options and traditional MH long options. * mh/mh_error.c: (new) Diagnostic output. * mh/mh_fmtgram.y: (new) Parser for format strings. * mh/mh_format.c: (new) Run-time execution of format strings. * mh/mh_getopt.c: (new) MH-style options parsing. * mh/mh_getopt.h: (new) Its prototypes. * mh/mh_init.c: (new) Initialization module. * mh/scan.c: (new) Implementation of scan command. 2001-09-10 Sergey Poznyakoff * mailbox/mbx_mh.c: Implemented append. Disabled reading of deleted messages when doing mailbox scan. * mail/summary.c: Do not set first_unread or first_new to the message which is marked as deleted. * mail/z.c: Do not count deleted messages into the total number of lines output. 2001-09-09 Alain Magloire This was done when cranking the number of warning generated by gcc (-Wall, etc ...) * mailbox/mbx_mh.c: Add include for pthread. seq_number is size_t. (_mh_message_name): The problem here is that asprintf() is a GNU extension. We want libmailbox to be as independent as possible, so it will not be required for program to be link with libmailutils(it is not even install). Default to snprintf (). (mh_close): return an int. (_mh_message_insert): n should be size_t. 2001-09-09 Alain Magloire * doc/pop3.texi: Update the doc. * doc/sfrom.c.texi: Line too long. * doc/stream.texi: Line too long. For the new mailbox, one of the short coming with the old stream_t object was that select() was not cover, meaning it was not possible to check if a stream was {read,write} ready. The old was to get the fd (stream_get_fd()) and do the select. Providing, stream_is_readready (stream_t, int timeout); stream_is_writeready (stream_t, int timeout); stream_is_exceptionpending (stream_t, int timeout); stream_is_open (stream_t); Takes care of it. It will work specially for tcp stream. * mailbox2/stream.c: New functions for the select calls: (stream_is_readready): New function. (stream_is_writeready): New function.(stream_t, int timeout); (stream_is_exceptionpending): New function. (stream_is_open): New function. * mailbox2/bstream.c (_bs_readline): Bug was truncating the string to early. (_bs_is_readready): New file. (_bs_is_writeready): New file. (_bs_is_exceptionpending): New file. (_bs_is_open): New file. * mailbox2/fstream.c: stubs for the select functions. * mailbox2/memstream.c: stubs for the select functions. * mailbox2/mapstream.c: stubs for the select functions. * mailbox2/tcpstream.c: stubs for the select functions. * mailbox2/include/mailutils/stream.h: Adjust the prototypes * mailbox2/include/mailutils/sys/stream.h: Adjust the prototypes It is better not to put threading (Pthread) code in the low level API. But instead in mailbox_t framework, where it can be control. * mailbox2/include/mailutils/pop3.h: Adjust the prototypes. * mailbox2/pop3/*.c: Remove threading code. 2001-09-09 Sergey Poznyakoff * mailbox/mbx_mh.c: Bug fix: both pool_first and pool_last must be biased by MAX_OPEN_STREAMS; 2001-09-08 Sergey Poznyakoff Initial implementation of MH mailbox format. It is functional in read-only mode. In read-write, it is able to delete and undelete messages but lacks `append message' functionality. Expunge does not unlink message files but rather renames them prepending ',' to a filename, after MH fashion. * mailbox/mbox_mh.c: (new) * mailbox/url_mh.c: (new) * mailbox/folder_mh.c: (new) * mailbox/Makefile.am: Added mh-related sources. * mail/mail.c: Register mh_record. * mailbox/include/registrar0.h: Added mh-related declarations. * include/mailutils/registrar.h: Declare mh_record. * mailbox/mbx_mbox.c: Check for MU_ATTRIBUTE_DELETED in mbox_expunge. * libmu_scm/mu_mailbox.c: mu_scm_mailbox_print(): handle mailbox == #f case. * libmu_scm/mu_message.c: mu_scm_message_print(): handle message == #f case. 2001-09-06 Alain Magloire * mailbox/folder_mbox.c (folder_mbox_open): Implemeted. 2001-09-05 Sergey Poznyakoff * MySql/MySql.h: New defines MHOST, MPORT, etc. * MySql/MySql.c: Improved error logging. Fixed memory leak due to absence of mysql_close() calls (noticeable on imap4d when doing multiple login attempts). Provide configurable parameters to mysql_real_reconnect to allow connecting to the remote database and/or non-standard ports. 2001-09-04 Alain Magloire * mailbox/mbx_imap.c (message_operation): Check if the imap server went away(f_imap->isopen) and flag an error. 2001-09-03 Alain Magloire * mailbox/folder_imap.c (imap_use): Check return value. * mailbox/mailbox.c (mailbox_get_debug): Get the mu_debug_t object from the folder if available. * mailbox/mbx_imap.c (imap_append_message): Check for EAGAIN. (imap_header_get_value): If the operation return 0, set error to ENOENT. 2001-09-03 Alain Magloire * configure.in: AC_REPLACE_FUNCS(fgetpwent); * include/mailutils/parse822.h: Add a prototype for parse822_skip_nl(). * lib/Makefile.am: add fgetpwent.c * lib/fgetpwent.c: New file. * mail/from.c (mail_from): Use the cover functions attribute_is_xxxx() instead of getting the flag. * mailbox/attribute.c: Cleanup the mess. attribute_set_{read,delete,seen,flagged,answered}. attribute_unset_{read,delete,seen,flagged,answered}. attribute_is_{read,delete,seen,flagged,answered} should be no more then cover functions calling attribute_set_flags(), attribute_get_flags() and attribute_unset_flags(). * mailbox/folder_imap.c: MU_ATTRIBUTE_READ, is not part of IMAP protocol use \\Seen. * mailbox/mbx_imap.c: Remove the hack trying to reconnect, it does not work. * mailbox/mbx_pop.c(pop_get_messages): Set the new functions for the attribute. (pop_get_attribute): New functions. (pop_set_attribute): New functions. (pop_unset_attribute): New functions. (pop_attr_flags): Removed. * mutil.c (mu_hex2ul): GNU coding std. (parse822_time): Do not use tzname as a variable name tzname is global variable in libc, better clear away. (parse822_date_time): Likewised. * pop3d/Makefile.am: add virtual.c * pop3d/pop3d.c (main): register getpwnam_ip_virtual, getpwnam_host_virtual * pop3d/pop3d.h: declare, getpwnam_ip_virtual(), getpwnam_host_virtual(). * pop3d/virtual.c: New file. 2001-09-02 Alain Magloire * mailbox/mutil.c (getpwma_virtual): Memory overrun, did not reserve enough space to accomodate the extra slash, when doing the sprintf(). Include <string.h>, since we use strdup(). 2001-08-31 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * imap4d/list.c (list_file): don't show INBOX if virtual 2001-08-31 Sergey Poznyakoff * mailbix/mutil.c: Fixed declaration of _app_getpwnam. Moved mu_virtual_domain out of #ifdef guard. Fixed typo in getpwnam_virtual: erroneously returned NULL instead of p. 2001-08-31 Sergey Poznyakoff Generalized mu_getpwnam interface. mu_register_getpwnam allows to register several functions which will be tried in turn in order to obtain struct passwd*. Changed virtual domain code in pop3d and imap4d to use this approach. * mailbox/mutil.c: _app_getpwnam is a list of getpwnam functions. mu_getpwnam calls each function in succession until it finds one which returns non-NULL value. * include/mailutils/mutil.h: Fixed mu_.*getpwnam declarations. Added declaration for mu_virtual_domain and getpwnam_virtual() * mailbox/Makefile.am: Add -DSITE_VIRTUAL_PWDDIR to CFLAGS. * configure.in: New option --with-virtual-pwddir allows to configure the path to domain passwd files. Defaults to <sysconfdir>/domain. * imap4d/copy.c: Use mu_virtual_domain instead of is_virtual. * imap4d/select.c: Likewise. * imap4d/status.c: Likewise. * imap4d/imap4d.c: Register getpwnam_virtual for handling virtual domains. * pop3d/pop3d.c: Likewise. * imap4d/login.c: Removed imap4d_virtual. Its functionality passed to getpwnam_virtual. * pop3d/pop3d.h: Include mutil.h * pop3d/user.c: Removed pop3d_virtual. Its functions are performed by getpwnam_virtual. Renamed is_virtual to mu_virtual_domain. * mail/alias.c: Use linear hash ordering. 2001-08-30 Alain Magloire In the virtual code, change the chdir() and build the full pathname in a buffer. For a daemon, it is better to stay in "/" the root. Moving in subdirecteris, will not permit the volume to be unmounted. But we do not follow the same rule for imap4d, it should be fix. * pop3d/signal.c: Shutup unused parameter warrning from gcc. * pop3d/user.c: Define macro VIRTUAL_PWDDIR. use sprintf() to build filename instead of chdir(). (PAM_gnupop3d_conv): Shutup unused parameter warrning from gcc. Make sure variable mailbox_name is initialized. * include/mailutils/mutil.h: Typo "struct password" instead of "struct passwd". Use const appropriately in the declaration of mu_register_getpwnam() and mu_getpwnam(). * mailbox/mutil.c: Use const appropriately in the definition of mu_register_getpwnam() and mu_getpwnam(). Typo "struct password" instead of "struct passwd". 2001-08-30 Sergey Poznyakoff More changes to better integrate mysql support. Introduced mu_getpwnam function. The function first calls system getpwnam, if it fails, it calls application-defined getpwnam function. mu_register_getpwnam can be used to register such a function. * configure.in: Add -lm to AUTHLIBS when configured with --enable-mysql. When checking for PAM: Append to AUTHLIBS instead of just assigning to it. * imap4d/Makefile.am: Moved @AUTHLIBS@ before libmailutils. Needed when using mysql. * pop3d/Makefile.am: Likewise. * imap4d/imap4d.c: use mu_register_getpwnam. * pop3d/pop3d.c: Likewise. * pop3d/user.c: Use mu_getpwnam. * imap4d/login.c: Likewise. * mailbox/mbx_default.c: use mu_getpwnam. Removed inclusion of MySql.h. * mailbox/mutil.c: new functions: mu_getpwnam() and mu_register_getpwnam(). Removed inclusion of MySql.h * include/mailbox/mutil.h: Prototypes for the new functions. 2001-08-30 Sergey Poznyakoff * MySql/MySql.c: Use asprintf instead of sprintf, use xmalloc instead of malloc. Return values were allocated dynamically but never freed, this caused memory leaks if authentication functions were called more than once. Made them static, so that they get reallocated at each new invocation of getM functions, thus reclaming lost storage. Made <config.h> the first file to be included and guard it with #ifdef HAVE_CONFIG_H Reindented text to conform to GNU coding style. * MySql/Makefile.am: Use @BUILD_LIBMYSQL@ substitution instead of direct assignment to noinst_LIBRARIES, so the subdir gets distributed properly. * configure.in: New substitution variable BUILD_LIBMYSQL. Append linker flags to AUTHLIBS, since modifying LIBS effectively breaks compilation. 2001-08-29 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * imap4d/select.c (imap4d_select0): * imap4d/copy.c (imap4d_copy0): * imap4d/status.c (imap4d_status): treat INBOX differently if virtual * imap4d/login.c (imap4d_virtual): new function (imap4d_login): call imap4d_virtual * imap4d/imap4d.h: add is_virtual variable * configure.in (USE_VIRTUAL_DOMAINS): add virtual domain option * pop3d/user.c (pop3d_virtual): new function for "virtual domains" (pop3d_user): call pop3d_virtual 2001-08-28 Alain Magloire * mailbox2/include/mailutils/list.h: the typedef list_t is rename mu_list_t, as a suggestion from Sam R. * mailbox2/list.c: All the function names are prefix with "mu_". 2001-08-27 Alain Magloire * mailbox/folder_imap.c (imap_list): When \NoSelect, it is also mean that the file is a directory. 2001-08-27 Jakob 'sparky' Kaivo * mail/send.c (mail_send0): change readline (NULL) to readline (" \b") so there is really no prompt 2001-08-24 Jim Hull * Makefile.am: * acconfig.h: Added support for new MySql addition to mailutils * configure.in: * MySql/Makefile.am: * MySql/MySql.c: Mini lib to link to when mysql support * MySql/MySql.h: enabled (with --enable-mysql) * doc/Readme.mysql: Readme file for setup. * imap4d/login.c: * mailbox/mbx_default.c: The Patch pretty much works the same * mailbox/mutil.c: all around. if getpwnam() returns null * mailbox2/mutil.c: then your db is checked for the user, * pop3d/apop.c: and the struct is filled if found, * pop3d/user.c: returns null if not. If shadow support is used, then the same is done with getspnam(). * examples/mail.MysqlMailer.c: Simple sendmail backend support. 2001-08-24 Alain Magloire * sieve/Makefile.am: To EXTRA_DIST add md5-rsa.{c,h}. * mailbox2/header.c(header_aget_value): Base on discussion with Sergey if the call fails no memory should be allocated and the return status should be return i.e. status != 0. * imap4d/fetch.c (fetch_bodystructure0): Check for sp != NULL. * imap4d/fetch.c (send_parameter_list): Check for sp != NULL. 2001-08-23 Sergey Poznyakoff * mail/msgset.y: Fixed erroneous call to msgset_select (second arg should have been a pointer). Added :t (tagged) and :T (untagged) selection criteria. * mail/tag.c: (new) Implementation of tag command. * mail/table.c: Added entries for "tag" and "untag". * mail/Makefile.am: Added tag.c * mail/from.c: Display tagged messages. * mail/mail.h: Added protos and defines for mail_tag(). 2001-08-22 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * imap4d/fetch.c (bodystructure): check sp != NULL before using 2001-08-18 Sergey Poznyakoff * libmu_scm/mu_mime.c: (new) Scheme primitives for handling mime messages. * libmu_scm/mu_message.c: mu_scm_message_add_owner() - add new object to the owner chain of the message. * libmu_scm/mu_scm.h: Prototypes for new functions. * libmu_scm/mu_scm.c: Call mu_scm_mime_init(). * guimb/scm/reject.scm: (new) Implementation of Sieve "reject" action. * guimb/scm/redirect.scm: Moved sieve-message-bounce to sieve-core.scm * guimb/scm/sieve-core.scm: New function sieve-message-bounce. 2001-08-16 Sergey Poznyakoff * mail/msgset.y: Implemented :/expr/ -- search in the message body. Fixed memory leak in select_header (missed regfree). 2001-08-14 Sergey Poznyakoff * mail/msgset.y: Extended regexp syntax: IDENT:/EXPR/ fetches all messages whose header IDENT matches given EXPR. The match is case-sensitive if IDENT starts with a capital letter and is case-insensitive otherwise. 2001-08-12 Alain Magloire * mailbox2/*: Move more code from the original mailbox To much to enumarate. 2001-08-07 Alain Magloire * m4/regex.m4: New file to check for GNU regex. * lib/regex.c: New file, GNU regex implementation. * lib/regex.h: New file. * lib/posix: New directory. * lib/posix/Makefile.am: New file. * lib/posix/regex.h: New file. * lib/Makefile.am: Add SUBDIRS=posix and regex.c dependencies. * mail/msgset.y: Remove HAVE_REGEX macro and check variable "noregex" before using regex. * configure.in: Check for GNU regex. 2001-08-07 Alain Magloire * mail/msgset.y: Draft implementation of a proposition to allow regular expressions. (REGEXP): Passing the address of the pointer instead of the pointer. (INDENT): Likewised. * mail/Makefile.am: Add in EXTRA_DIST msgset.c to force its generation when doing the distribution, having yacc should not be required. * mailbox/mutil.c (mu_hexstr2ul): Properly cast the expression before doing the comparison. 2001-08-06 Sergey Poznyakoff * mail/msgset.y: (new) A parser for message set specifications of arbitrary complexity. Returns a singly linked list of message specifications that can be iterated without need for recursion. * mail/mail.h: Prototypes for msgset_ functions. Removed proto for util_expand_msglist. * mail/Makefile.am: Added msgset.y * mail/{copy.c, followup.c, headers.c, next.c, pipe.c, previous.c, util.c, write.c}: Use msgset_parse instead of util_expand_msglist. * mail/util.c: Added util_msgset_iterate() to iterate over a message set. Added util_get_content_type() and util_get_hdr_value() (from decode.c). * mail/decode.c: Use util_msgset_iterate(). Moved get_content_type() and get_hdr_value() to util.c * mail/table.c: Fixed synopsis for decode. * libmu_scm/Makefile.am: Removed .x and .doc files from EXTRA_DIST. Thanks to Alain. * guimb/Makefile.am: Likewise. * m4/Makefile.am: Added maintain.m4 2001-08-06 Alain Magloire * sieve/{exitcodes.h hmac-md5.h md5.c md5.h md5global.h}: Removed. * sieve/md5-rsa.c: New file, clearly identify that the algo. is from RSA and not GNU md5. * sieve/md5-rsa.h : New file. * sieve/Makefile.am: added md5-rsa.[ch]. * sieve/message.h: lcase() change for strlower (). * sieve/script.c: Include md5-rsa.h. * sieve/sieve-gram.y: lcase changed for strlower (). * sieve/util.c: Remove all the unnecassary code and only implement strlower() and strupper(). * sieve/util.h: Only export strlower and struppper (). * messages/messages.c: Also include pop_record amd imap_record. 2001-08-05 Sergey Poznyakoff * mailbox/mbx_mbox.c: Added mbox_stream_size(). * mailbox/message.c: Added message_stream_size(). * mailbox/stream.c: Fixed some comments. * libmu_scm/mu_port.c: (new) I/O port functions. This allows to write and read mailboxes/messages using usual scheme primitives and thus effectively obsoletes mu_body interface, but I'll keep it for a while. * libmu_scm/mu_scm.c: Call to mu_scm_port_init(). * libmu_scm/mu_scm.h: Prototypes for port functions. * libmu_scm/mu_message.c: Added mu-message-get-port. mu-message-set-header: don't bail out if third argument is boolean, to allow for constructs like (mu-message-set-header m1 "From" (mu-message-get-header m2 "To")) * libmu_scm/mu_maibox.c: Added mu-mailbox-get-port. * guimb/scm/sieve.scm: Documented some obscure data structures. * guimb/scm/sieve-core.scm: Use sieve-mailbox-open instead of mu-mailbox-open. The former searches the list of open mailboxes and returns one if found. All the mailboxes get closed at once when the sieve program finishes execution. This saves memory and speeds up the execution (fewer calls to gc, if any). sieve-regexp-to-posix: escape special characters. action-reject: Use ports instead of mu-body- interface. * examples/reply.scm: Use ports instead of mu-body- interface. * mail/var.c: Added checks for missing arguments. 2001-08-04 Sergey Poznyakoff * mailbox/header.c: Return value of header_aget_value() was always 0. Made it consistent with that of header_get_value(). Same for header_aget_field_value(). * guimb/main.c: Fixed handling of default mailbox in the absence of other mailbox arguments. * guimb/collect.c: Likewise. * guimb/guimb.h: Removed unused declarations. * libmu_scm/mu_message.c: Changed mu-message-get-header-fields to allow for second optional argument. The argument is a list of header names to narrow output to. * guimb/scm/sieve-core.scm: Changed action-keep: it couldn't be just #f. Fixed and tested action-stop, action-redirect and test-exists. Fixed handling of null-length keys in sieve-str-str. test-address and test-header: use mu-message-get-header-fields to speed the things up. Implemented "envelope" test. * guimb/scm/sieve.scm: Add final #t to the generated code, so the empty scripts work. 2001-08-03 Sergey Poznyakoff * libmu_scm/mu_logger.c: (new) Interface to syslog functions. * libmu_scm/mu_mailbox.c: Added mu-mailbox-get-url. * libmu_scm/mu_message.c: Added mu-message-get-size, mu-message-get-lines. * libmu_scm/mu_address.c: Provide mu_scm_address_init() function. * libmu_scm/mu_scm.c: Call mu_scm_address_init(), mu_scm_logger_init(). Added mu-package and mu-version variables. * libmu_scm/mu_scm.h: Prototypes for mu_scm_address_init() and mu_scm_logger_init(). * libmu_scm/Makefile.am: Added mu_logger.c * guimb/main.c: Added --mailbox and --user options. Added escape for Scheme arguments (-{ and -}). * guimb/run_scm.c: Call collect_output() before dropping mailbox. Added exception handling. Added user-name variable. * guimb/collect.c: Added collect_output(). * guimb/guimb.h: Added prototypes. * guimb/Makefile.am: Added SUBDIRS. * guimb/scm: (new) Directory containing guimb modules and scripts. * guimb/scm/Makefile.am: (new) * guimb/scm/sieve.scm: (new) Sieve to Scheme translator. * guimb/scm/sieve-core.scm: (new) Sieve core functions for scripts generated by sieve.scm. * guimb/scm/redirect.scm: (new) Implementation of sieve "redirect" action. * configure.in: Output guimb/scm/Makefile. * mail/mail.c: Use mailbox_create_default for --file=MBOX. Some calls to exit() were placed *before* issuing diagnostics. Fixed. * mailbox/folder_imap.c: Changed ENOTSUP to ENOSYS. 2001-08-02 Sam Roberts * folder_imap.c: don't pretend to be authorized if we are not, it only leads to confusion * mailbox.c: mailbox created the folder, it should set it's folder's debug object when it's is set, otherwise there is no way to get debug messages from a mailbox's folder (I was getting all the pop protocol traces but not the imap ones) * TODO: updated * sieve/: script.c, sieve.c: Fixed bug, I was deleting a message after a fileinto, which was wrong. Tweaked the logging, it's little cleaner and more useful. * sieve/COPYING: Removed the RCS keyword in the imported copyright notice. * sieve/: sieve-gram.y, sieve-lex.l: Now using xmalloc() from ../lib. * examples/mbox-explode.c: Don't mkdir unless the mailbox can be opened, and better cleanup on error detection. * sieve/examples/: Test, test.out: Commiting my example/test sieve scripts so I can maintain them with cvs (I use them at work and home). * mail/util.c: Not all systems have <sys/fcntl.h>, changed to use HAVE_FCNTL_H. * mailbox/mbx_pop.c: imap logged the passwd in protocol traces, pop didn't, so I made them both be the same (the way that is most useful when debugging protocol traces) * sieve/examples/: INBOX.orig, Makefile, box.sv, ex-1.10.2.sv, ex-2.3a.sv, ex-2.5.1.sv, ex-2.7.3.sv, ex-3.1a.sv, ex-3.1b.sv, ex-3.2.sv, ex-4.1.sv, ex-4.2.sv, ex-4.4a.sv, ex-4.4b.sv, ex-4.5.sv, ex-5.1.sv, ex-5.7.sv, ex-9.sv, ex-null.sv, ex-save-all.sv, example.sv, exn-2.3b.sv, exn-5.4.sv, t-exists.sv, t-fileinto.sv, t-mailutils.sv: Commiting my example/test sieve scripts so I can maintain them with cvs (I use them at work and home). 2001-08-01 Alain Magloire * mailbox2/header.c: Put the stubs. * mailbox2/include/mailutils/header.h: Prototypes. * mailbox2/include/mailutils/sys/header.h: Prototypes. 2001-07-31 Alain Magloire More intelligence was put in decode to detect mime messages. This temporary until we articulate how to present mime messages. decode will probably replace print.c. Parsing of mailcap is not yet done. * mail/decode.c: Aware of the content_type and the encoding for mime message, will superced [Pp]rint. * mail/mail.c: Set the columns variable at startup. * mail/mail.h: Prototype fpr util_screen_columns(). * mail/mailline.c: Reset COLUMNS on SIGWINCH. * mail/util.c: New function util_screen_columns(); * sieve/Makefile.am: Remove gcc specific flags. * sieve/xmalloc.c: Removed, use lib/xmalloc.c instead. * sieve/xmalloc.h: Removed. * sieve/sysexists.h: Removed. 2001-07-31 Alain Magloire * mailbox2/Makefile.am: add new files. * mailbox2/fstream.c (_fs_write): n uninitialize. (_fs_open): Use S_ISREG() macro. * mailbox2/include/mailutils/base.h: Remove superfluous. * mailbox2/iterator.c: Define struct _iterator. * mailbox2: New files: observer.c observable.c address.c parse822.c list.c attribute.c envelope.c 2001-07-30 Sergey Poznyakoff * guimb/main.c: Set g_argv[0] to the program file name for consistency with guile. * libmu_scm/mu_message.c: Added new primitives: mu_message_copy mu_message_delete mu_message_get_flag mu_message_set_flag mu_message_get_user_flag mu_message_set_user_flag * libmu_scm/mu_scm.c: Define MU-ATTRIBUTE- constants. * libmu_scm/mu_address.c: (new) Address-related functions. * libmu_scm/Makefile.am: Added mu_address.c 2001-07-27 Sergey Poznyakoff * lib/xmalloc.c: call mu_error() instead of error(). * lib/malloc.c,lib/realloc.c: (new) Provide rpl_malloc() and rpl_realloc() (required by m4/malloc.m4, m4/realloc.m4) * lib/Makefile.am: Added malloc.c, realloc.c. * mail/mail.h: Include <xalloc.h> * mail/util.c: Removed util_[mc]alloc() in favor of x[mc]alloc(). * mail/alias.c: Use x[mc]alloc() instead of util_[cm]alloc(). * mail/alt.c: Likewise. * mail/mail.c: Likewise. * mail/mailline.c: Likewise. * mail/shell.c: Likewise. * mail/unset.c: Likewise. * mail/var.c: Likewise. * TODO: updated. 2001-07-25 Alain Magloire Based on Jakob's idea, an implementation for decode. But it is clearly not flexible enough: decode [msgno] [part] ? decode 28 2 IF message 28 is a multipart(mime) with two parts, the second part will be decoded and sent to stdout. * mail/decode.c: First implementation behind Jakob's proposal. 2001-07-23 Sergey Poznyakoff * configure.in,libmu_scm/Makefile.am,guimb/Makefile.am : Fixed to compile properly on systems with missing/incomplete guile. * include/mailutils/Makefile.am: Added mailutils.h to pkginclude_HEADERS. 2001-07-23 Alain Magloire * libmu_scm/mu_scm.h: Remove HAVE_LIBGUILE_H guard. * guimb/guimb.h: Remove HAVE_LIBGUILE_H guard. 2001-07-23 Alain Magloire * util.c (util_msglist_command): Check for interruption here also and that will permit interruption on long commands like "from *" 2001-07-23 Alain Magloire The reason the interrupt code did not work for me, is that by default using signal will make function calls restartable, at least on my default RH5.1, when read() was interrupted it did not return EINTR inside ml_getc(). * mail.c (main): Use sigaction if available to set SIGPIPE. * mailline.c (sig_handler): Reset "lines" variable. Recall signal() if we did not have sigaction. (ml_readline_init): Use sigaction to set SIGWINCH and SIGINT. * libmu_scm/mu_scm.h: Guard with HAVE_LIBGUILE_H. * guimb/guimb.h : Guard with HAVE_LIBGUILE_H. 2001-07-22 Sergey Poznyakoff Renamed debug_.* symbols to mu_debug_.* to avoid nameclashes. Files affected: * examples/mbox-dates.c, mbox-explode.c; * from/from.c; * include/mailutils/{debug.h,folder.h,mailbox.h,mailer.h}; * libmu_scm/mu_message.c; * mail/send.c; * mailbox/{debug.c,folder.c,mailbox.c,mailer.c}; * mailbox/include/{debug0.h,folder0.h,mailbox0.h,mailer0.h}; * mailbox2/include/mailutils/base.h; * readmsg/readmsg.c; * sieve/sieve.c; * configure.in: Added --without-guile. Uncommented making libmu_scm and guimb. Added check for -ldl before checking for -lpam: both FreeBSD and OpenBSD lack libdl, but have working libpam. * messages/Makefile.am: Added missing @ARGP.*@ substitutes. 2001-07-21 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * mail/Makefile.am (mail_SOURCES): add decode.c * mail/mail.h: add mail_decode protoype * mail/decode.c (mail_decode): new file, new function * mail/table.c: add decode command * mail/util.c (util_expand_msglist): insert placeholder for attachment operations 2001-07-20 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * messages/messages.c: new file, implement of elm messages command (parse_opt): add --silent and --quit options (messages_count): new function 2001-07-20 Alain Magloire * mailbox/misc.c: Removed, _cpystr() function move in mutil.c and rename to util_cpystr(). * mailbox/include/misc.h: Removed. * include/mailutils/mutil.h: Added prototype for util_cpystr(). * mailbox/mutil.c (util_cpystr): New function, move the _cpystr() from misc.c and move here. * mailbox/Makefile.am: Removed misc.c in dependencies. * mailbox/include/Makefile.am: Removed misc.h in dependencies. * mailbox/address.c: Use util_cpystr() instead of _cpystr(). Added <mailutils/mutil.h> prototype. * mailbox/auth.c: Likewised. * mailbox/url.c: Likewised. * mailbox/folder.c: Likewised. 2001-07-19 Sergey Poznyakoff Added guile interface library. * Makefile.am: Added scripts libmu_scm guimb. * configure.in: Checks for presence of Guile components. Making libmu_scm and guimb commented out until we solve debug_print name clash (libguile/debug.h vs. mailutils/debug.h). * scripts: (new) Contains scripts for preparing guile documentation strings from C sources. The reason for their presence is that guile-doc-snarf scripts distributed with guile up to version 1.4 do not work. The comment at the beginnig of scripts/guile-doc-snarf describes why. We'll have to use these until next version of guile fixes the bug. * scripts/{Makefile.am,guile-doc-snarf,guile-func-name-check, guile-snarf.awk: (new) * scripts/.cvsignore: (new) * libmu_scm: (new) Guile interface library: * libmu_scm/Makefile.am: (new). * libmu_scm/mu_scm.c: (new) Main module. * libmu_scm/mu_mailbox.c: (new) Mailbox primitives. * libmu_scm/mu_message.c: (new) Message primitives. * libmu_scm/mu_body.c: (new) Message body primitives. * libmu_scm/mu_scm.h: (new) Library prototypes. * libmu_scm/.cvsignore: (new) * guimb: (new) Process mailbox(es) using Guile program or expression. * guimb/Makefile.am: (new) * guimb/main.c: (new) Main functions. * guimb/collect.c: (new) Collect input. * guimb/util.c: (new) Some utilities. * guimb/run_scm.c: (new) Initialization of libguile and libmu_scm * guimb/guimb.h: Prototypes. * guimb/.cvsignore: (new) * examples/reply.scm: Automatic mail responder for use with guimb. 2001-07-18 Sam Roberts * include/mailutils/url.h: New api functions for parsing. * doc/: Makefile.am, framework.texi, url.texi: Updated and corrected URL documentation. * doc/ex-url.texi: The url api example. Derived from ../example/url-parse by a perl script. * mailbox/url.c: Added a function to do generalized URL parsing. * mailbox/: url_imap.c, url_pop.c: Use the url_parse() function to parse the URL. * mailbox/mbx_pop.c: Added checks for low-memory conditions, and look for passwd in url before prompting user. * mailbox/folder_imap.c: Look for passwd in the url before prompting. * examples/: .cvsignore, Makefile, Urls, url-parse.c: Added example of URL parsing, and test for parsing. * examples/Urls.good: Added test for % decoding. * mailbox/mbx_mbox.c: Needed <stdlib.h> on QNX6. * mailbox/include/: registrar0.h, url0.h: Comment on schemes, and removed comment on encoding. 2001-07-18 Alain Magloire * mailbox/mbx_mbox.c (mbox_messages_count): This function does not call the observers, the callback function, on the mbox_scan() does. * frm/frm.c (main): call mailbox_scan () instead of mailbox_messages_count () since we want to be notified. 2001-07-12 Sam Roberts * examples/mbox-dates.c: Added pop and imap records. * include/mailutils/mutil.h, mailbox/mutil.c: New functions - mu_hex2ul(), mu_hexstr2ul(). * mailbox/message.c: unistd.h needed on QNX6 * TODO: Added Sergey's todo items and mine for sieve. 2001-07-12 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * include/mailutils/mailutils.h: new "catchall" header, includes all mailutils headers 2001-07-10 Sam Roberts * examples/Addrs.good: Now mapping ENOENT to EPARSE in error reporting, its clearer. 2001-07-09 Sergey Poznyakoff * configure.in: check for termios.h termio.h sgtty.h Added MU_MAINTAINER_MODE. * m4/maintain.m4: (new) Settings specific to maintainer-mode. * m4/Makefile.am: Added maintain.m4. * mailbox/attribute.c: Fixed flags_to_string(): MU_ATTRIBUTE_SEEN and MU_ATTRIBUTE_READ were swapped: the former produced 'R', and the latter 'O'. * mail/file.c: run "summary" after opening new mailbox. Issue diagnostics if mailbox cannot be opened. Display summary when called without arguments. * mail/from.c: Changed flags display. * mail/mailline.c: Provide ml_reread() when compiled without readline. Check for interrupt in (both versions of) ml_reread(). Use util_[cm]alloc() instead of [cm]alloc(). * mail/{print.c,visual.c}: set READ instead of SEEN attribute on read messages. * mail/z.c: case D_FWD missed break; Fixed typos in the comment to D_NONE. * mail/version.c: display options with which the program is compiled. * mail/util.c: Added util_malloc(), util_calloc(). * mail/mail.h: Protos for the above; * mail/alias.c: use util_[cm]alloc() instead of library functions wherever appropriate. * mail/alt.c: Likewise. * mail/mail.c: Likewise. * mail/shell.c: Likewise. * mail/unset.c: Likewise. * mail/var.c: Likewise. Implemented ~A (read signature from file). * mail/quit.c: Raise hold flag when not closing system mailbox (%). 2001-07-06 Alain Magloire * mail/mailline.c: "interupt" is actually a key word for some C compiler i.e. Watcomm C, rename it to "interrupted". * mail/util.c: The macros O_CREAT etc needs <sys/fnct.h>. 2001-07-06 Alain Magloire * mail/mail.c: Be a little more verbose when mailbox_{create,open}() fails at startup. * doc/Makefile.am: Add the missing *.texi in the list of EXTRA_DIST. 2001-07-06 Sergey Poznyakoff * imap4d/fetch.c: imap4d_fetch0(): return RESP_OK on success. * imap4d/bye.c: split imap4d_bye() into imap4d_bye() and imap4d_bye0(). * imap4d/logout.c: call imap4d_bye0() instead of imap4d_bye(). Reason: rfc 2060 requires that the server send a BYE untagged response before the (tagged) OK response. With our implementation it was vice-versa. * imap4d/imap4d.h: proto for imap4d_bye0(). * mail/mail.c: changed startup banner. * mail/mailline.c: handle SIGWINCH. * mail/util.c: Include <termios.h> when present. * configure.in: test for the presence of <termios.h> 2001-07-05 Alain Magloire * mail/send.c(mail_send0): Put the mailer in debug mode if util_find_env("verbose")->set, good for debuging. 2001-07-05 Alain Magloire According to the man page: "sendmail contains a command, possibly with options, that mailx invokes to send mail. You must manually set the default for this environment variable by editing ROOTDIR/etc/mailx.rc to specify the mail agent of your choice. The default is sendmail, but it can be any command that takes addresses on the command line and message contents on standard input." * mail/mail.c (main): Register smtp_record too as a mailer. Set variable sendmail to _PATH_SENDMAIL as the default mailer. * mail/mail.h: New proto util_setenv(), util_find_env() change to be const char *. * mail/send.c (msg_to_pipe): New function, open a pipe() and write a message to it. (mail_send0): Now create the mailer according to util_find_env("sendmail")->value. Use a pipe() if mailer_create() fails. * mail/set.c (mail_set): After free(entry->value) set the value to NULL. * mail/util.c (util_find_env): Change the prototype to be const. Remove hack about need_free and use a static variable to hold "asksub". * mail/util.c (util_setenv): New function to set environment model on libc call setenv(). * mailbox/message.c (message_sender): Set the default sender base on the passwd entry. 2001-07-05 Alain Magloire We can send a message and if the address starts with '|' the message is pipe to the cmd and if starts with '/' it is save to a file. mailx ghislaine '|cat >save' mails a message to ghislaine and also copies the message into a file called save. * mail/mail.h: Change struct send_environ to contain two new fields char **outfiles and int nfiles. * mail/send.c: Look for '/' and '|' when parsing the addresses and add them to struct send_environ outfiles. (mail_send0): Memory overflow, we were free(buf) twice. made char *buf local where it is needed. Save the message to outfiles when set. (isfilename): New function. * mail/followup.c: Initialise the struct send_environ new fields. * mail/reply.c: Initialise the struct send_environ new fields. * lib/argcv.c: Add support to consider string between single quote like one word(same as double quotes). 2001-07-04 Alain Magloire * mailbox2/stream.c: stream_read() and stream_write() change prototype to be "void *" instead of "char *". * mailbox2/bstream.c: Adjust bstream_{read,write} to the new prototypes. * mailbox2/pop3/pop3_stream.c: Likewised. * mailbox2/Makefile.am: New file. * mailbox2/pop3/Makefile.am: New file. * mailbox2/mstream.c: Mapfile stream Implementation. * mailbox2/fstream.c: File stream implementation. * mailbox2/include/mailutils/sys/fstream.h: New file. * mailbox2/include/mailutils/sys/mstream.h: New file. * mailbox2/tcp.c: rename to tcpstream.c. * mailbox2/include/mailutils/sys/tcp.h: Rename to tcpstream.h * mailbox/mapfile_stream.c (_mapfile_write): Make sure the size is not zero before making the memcpy(). 2001-07-03 Alain Magloire * mail/headers.c: Catch the overflow in the calculation by reseting the number of lines to default screen lines. * mail/mail.c (main): Add a "summary" call also for the initial commands on startup(in interactive). * mail.h: Proto for mail_summary() and mail_version(). * table.c: Add mail_summary() and mail_version() in the cmd table. * util.c (util_getcols): First try an ioctl(TIOCGWINSZ,..) call not all shells set the COLUMNS environ. (util_getlines): Likewised. Also take to account the prompt in the lines number. * z.c (mail_z): Change the behaviour of "z." to show a screenfull when the lastpage is reach. This is very practical when starting mail, since "z." is the initial command to show the header summary. * mail/version.c: New file, show mail version, mail_version(). * mail/summary.c: New file, display a short summary of the mailbox. mail_summary(). * mail/Makefile.am: add summary.c and version.c * mailbox2/include/mailutils/mbox.h: Proto for Unix-Mbox. 2001-07-03 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * README-alpha: note that INSTALL is generated 2001-07-03 Sergey Poznyakoff * configure.in: --with-mail-rc option: set path to system-wide mail.rc file. * mail/Makefile.am,mail/mail.c: Likewise. * mail/send.c: check for "dot" variable. Implemented "~.", "appenddeadletter". * mail/inc.c: (new) inc[orporate] command. * mail/{mail.c,mail.h,table.c}: Ditto. * mail/print.c: Handle interrupts when fetching message body. * mail/followup.c: insert ',' between recepients' addresses. * mail/quit.c: use mailbox_save_attributes(). Implemented "hold" variable. Raise MU_ATTRIBUTE_READ on every message with MU_ATTRIBUTE_SEEN bit set (compatibility with existing mails). * mail/from.c: Changed order of checking message attribute bits to be compatible with existing implementations. * mail/z.c: removed break from the loop. * mailbox/attribute.c: added attribute_set_modified() function. Fixed attribute_unset.* functions to raise MU_ATTRIBUTE_MODIFIED bit. * include/mailutils/attribute.h: Proto for attribute_set_modified(). 2001-07-02 Alain Magloire * mailbox2/tcp.c: make it thread-safe. * mailbox2/bstream.c: Implement buffered stream. * mailbox2/pop3_stream.c: Use a buffered stream. 2001-07-02 Alain Magloire Feedback from Sergey for the need of saving the attribute flags without expunging. Note, this is a hack, the code is taken from mbox_expunge(mbx_mbox.c) and there is lot of duplication. But since we are moving toward a new mailbox API, the code will be rewritten more cleanly in the new API. * include/mailutils/mailbox.h: Add proto mailbox_save_attributes() * mailbox/include/mailbox0.h: New field in struct _mailbox _save_attributes (mailbox_t); * mailbox/mailbox.c: New function mailbox_save_attributes (). * mailbox/mbx_mbox.c: New function mbox_save_attributes (), implement saving the attribute flags in header field "Status:" * imap4d/bye.c: call mailbox_save_attributes() when exiting. it will save the attribute flags. * imap4d/close.c: Typo. * imap4d/logout: Remove the mailbox_close() and mailbox_destroy() it is being call imap4d_bye (). * imap4d/select.c (imapr3d_select0): call mailbox_save_attributes() if a mailbox was already selected. 2001-07-01 Alain Magloire * mail/util.c (util_strupper): The first implementation was buggy, corrected. 2001-07-01 Alain Magloire * mailbox2/pop3/*: Pop3 functions are thread-safe and cancel-safe. The problem is monitor.h, we will probably end up doing a monitor.h.in and set at compile time if threading is enable or not. 2001-07-01 Alain Magloire * mail/util.c (util_expand_msglist): Cleanup the expand by pattern by moving some code in util_strupper(), the comparison must be case insensitive. (util_strupper): Convert the string to uppercase. 2001-07-01 Sergey Poznyakoff * mailbox/attribute.c: set MU_ATTRIBUTE_MODIFIED bit in the underlying structure when setting the flags. * mail/mail.c: Initialize readline and set user name before determining working mode. For an empty mailbox output diagnostics and quit. Read system-wide mail.rc file. Implemented "set ignoreeof". * mail/send.c: Implemented "set ignore", "set ignoreeof", "set nosave". Use doubled escape character to insert a single escape to the message body. * mail/delete.c: Implemented "set autoprint" * mail/dp.c: removed util_do_command("next"): delete does this anyway. 2001-06-30 Sergey Poznyakoff * configure.in: define READLINE_LIBS instead of linking libreadline to every binary. AC_CHECK_LIB(pthread) was missing comma before ACTION_IF_NOT_FOUND, thus have_libpthread was always no. * mail/Makefile.am: Use READLINE_LIBS * lib/argcv.[ch]: Treat a sequence of whitespace characters as a single whitespace. Break string on given delimiters. Do not split quoted arguments. * mail/set.c: Modified to use new argcv_get() syntax. * mail/delete.c: After deleting move realcursor to the next non-deleted message. * mail/alt.c: Honour "metoo" variable. Try to determine users full email address. * mail/mail.c: do not put empty or comment lines into readline history. Handle keyboard interrupts properly. Implemented `warranty' command. Warn user about arrival of a new mail. * mail/send.c: Handle keyboard interrupts. Use util_tempfile(). * mail/{send.c,reply.c}: change args in call to mail_send0(): packed all header strings into one structure to facilitate escape handling. Warn user about null message body. * mail/mailline.c: (new) readline-related functions. * mail/var.c: (new) Functions for escape variable handling. * mail/util.c: added extra argument to util_find_entry(): a pointer to the table where to look up. Added util_error(), util_help(), util_tempfile(). * mail/*.c: use util_error() instead of printing diagnostics to ofile. * mail/{source.c,if.c}: removed mail_is_terminal(), mail_set_is_terminal(): `interactive' is used instead. * mail/mail.h: in struct mail_command_entry changed `isflow' field to `flags'. It contains information about semantics of the command. * mail/table.c: Initialize `flags' field. 2001-06-29 Alain Magloire * mail/util.c (util_expand_msglist): Implement expansion of :d All deleted messages :n All new messages :o All old messages :r All messages that have already been read :u All unread messages /string All messages with string in the subject line (the case of characters in string is ignored) 2001-06-27 Alain Magloire * configure.in: We were not checking for thread support at all because the test was faulty. * readmsg: New directory. * readmsg/readmsg.c: New file. * readmsg/readmsg.h: New file. * readmsg/msglist.c: New file. This is base on a old testing program Dave inglis wrote to test the mime parsing code. It is still work in progress but a good base for the readmsg(1) elm utility clone. Not enable yet in the TOP Makefile. 2001-06-26 Alain Magloire * mail/from.c: Use address_get_personal() for a more pretty print when showing the headers. 2001-06-26 Sergey Poznyakoff * mail/util.c: Added extra argument to util_msglist_command(), controlling whether it should move the cursor to the last message processed. * mail/delete.c,mail/dp.c,mail/edit.c,mail/from.c,mail/hold.c, mail/mbox.c,mail/print.c,mail/reply.c,mail/size.c,mail/top.c, mail/undelete.c,mail/util.c,mail/visual.c: Likewise. * mail/util.c: util_screen_lines() function. util_outfolder_name(). util_save_outgoing() * mail/z.c: removed z_lines() in favor of util_screen_lines(). * mail/headers.c: use util_screen_lines(). * mail/touch.c: Initial implementation. Simply calls mail_mbox. Maybe the table.c entry should point to mail_mbox instead? * mail/write.c: use util_fullpath(). * mail/send.c: call util_save_outgoing() to preserve sent message. Set umask 077 before calling mkstemp(). * mail/folders.c: Use $LISTER. * mail/followup.c: Implemented. * mail/from.c: Changed output format. * mail/mbox.c: move mail_mbox_commit to quit.c. * mail/quit.c: Likewise. Honour "keepsave" variable. 2001-06-25 Alain Magloire * mail/header.c: We were looping forever in here. The loop is not need it, header only prints one page that includes the message specified i.e. the header command only takes a message number as an argument that will serve as a reference to display a screen full. * mail/help.c: Use the pager code, the help is long. 2001-06-25 Alain Magloire * doc/Makefile.am: add {c-api,framework,programs}.texi EXTRA_DIST * imap4d/imap4d.c (imap4d_usage): Cut and paste typo. * pop3d/pop3d.c (pop3d_usage): Cut and paste typo. * include/mailutils/Makefile.am: add mutil.h to the list. * lib/strisignal.c: Define __P if not set. * m4/Makefile.am: Added tm_gmtoff.m4 tm_isdst.m4 tm_zone.m4 2001-06-25 Sergey Poznyakoff * mail/if.c: Removed confusing comment. * mail/copy.c: Split off mail_copy0. It is shared between mail_copy and mail_save. Implemented Copy command. Use mailbox_open_default() instead of mailbox_open(). Fixed possible memory leaks. * mail/write.c: Implemented Write. Fixed memory leaks. * mail/Makefile.am: removed discard.c * mail/discard.c: removed. Implemented in retain.c. * mail/retain.c: Implemented retain/ignore. It is more convenient to keep them in one module so they can share static data. * mail/alias.c: Implemented. * mail/unalias.c: Implemented. * mail/alt.c: Implemented. * mail/file.c: Check number of arguments. Display current mailbox name when called without args. Honour %, &, and + in mailbox names (possibly should be implemented in mailbox_open_default ?). Use mail_mbox_close(). After opening new mailbox, run "z." instead of "from *". * mail/folders.c: A (very rudimentary) implementation. * mail/headers.c: Removed if (num) clause: util_expand_msglist() now returns at least 1. * mail/pipe.c: Likewise. * mail/hold.c: Implemented. * mail/mail.c: Escape % signs in the command line before passing it to util_do_command(). * mail/mail.h: Protos for implemented functions. Proto for readline() if libreadline is not linked in. Definition for MAIL_ATTRIBUTE_MBOXED. * mail/mbox.c: Implemented. * mail/print.c: Print only header fields allowed by retain/ignore settings. * mail/quit.c: mail_mbox_close() shared between this module and file.c. Print statistics information on closing the mailbox (number of messages held and saved in mbox). * mail/reply.c: Implemented. * mail/save.c: Use mail_copy0(). * mail/send.c: Split off mail_send0(). It is used by mail_send() and mail_reply(). * mail/util.c: util_expand_msglist(): return 1 and set msglist[0]=cursor if argc == 1. util_do_command(): Added missing va_end(). util_get_sender(): Returns sender email for the given msgno. Optionally strips off domain part. util_slist_.*(): "string lists" used by alias,alt,retain, ignore. util_strcat(): Concat two strings, reallocating first to the necessary length. util_escape_percent(): Excape % signs in a string, so it can be used as format in .*printf calls. 2001-06-22 Sergey Poznyakoff * mailbox/mutil.c: added mu_get_homedir() and mu_tilde_expansion(); * include/mailutils/mutil.h: protos for new mu_ functions * imap4d/util.c: use mu_tilde_expansion(). * mail/z.c: implemented. * mail/if.c: implemented. * mail/mail.c: A read-eval loop function shared between mail.c and source.c. Quits gracefully upon reading EOF. Expand '~' in pathnames. Upon startup in read mode, display first screenfull of from lines, instead of listing the whole mailbox. This is compatible with existing implementations. Do not display prompt when not reading from a terminal. * mail/source.c: Use common read-eval loop. * mail/mail.h: Protos for new functions. struct mail_command_entry: added isflow field, needed for if/else/endif flow control. * mail/table.c: changes due to addition of isflow field. * mail/send.c: removed unconditional #include <paths.h>: it already was included from "mail.h". * mail/util.c: Added util_get_homedir() and util_fullpath(). 2001-06-21 Sergey Poznyakoff * mailbox/mutil.c: Fixed error introduced in the initial implementation of mu_mktime (now mu_tm2time). The comment on mu_tm2time() describes it. Revert the sign of the return value of mu_utc_offset(), so it agrees with the accepted timezone rules (+ for eastern hemisphere, - for western). 2001-06-19 Sam Roberts * include/mailutils/debug.h, mailbox/debug.c: New function: debug_printv() to complement debug_print(). * examples/mbox-dates.c: parse822_date_time now takes a timezone argument. We don't actually use the arguments, though. * include/mailutils/parse822.h: parse82_date_time() now uses the mu_timezone structure for portability. * include/mailutils/mailbox.h: Prototyped mailbox_destroy_folder(). * mailbox/mu_mktime.c: Moved mu_mktime to mutil.c as mu_tm2time, and removed mu_mktime.c * include/mailutils/mutil.h, mailbox/Makefile.am, mailbox/mbx_imap.c, mailbox/mutil.c, mailbox/parse822.c: Moved some generically useful date/time handling functions to mutil.c, fixed problems with portability of timezone information in struct tm, and created a new structure to hold timezone information, since struct tm doesn't do so reliably. * imap4d/: append.c, fetch.c, imap4d.h, namespace.c, search.c, util.c: Moved date/time parsing utility functions to mailbox/mutil.c. Added braces to initializers and removed unused variables prototyped shared functions, made functions that didn't return return void. (to quiet gcc -Wall), 2001-06-17 Sam Roberts * sieve/Makefile.am: More fixes to the packaging structure by Sergey. * acconfig.h, configure.in, m4/tm_gmtoff.m4, m4/tm_isdst.m4, m4/tm_zone.m4: Added tests for isdst, gmtoffset, and zone in struct tm. * mailbox/folder_pop.c: Confusing typo in comment. 2001-06-16 Sergey Poznyakoff * mailbox/mu_mktime.c(added): a wrapper around system mktime() function that honours the timezone. * mailbox/Makefile.am: add mu_mktime.c. * imap4d/fetch.c: date conversion in fetch_internaldate. get_timezone() not used anymore, removed. * imap4d/search.c: removed confusing comment. * imap4d/util.c: changed mktime() calls to mu_mktime(), this solves the timezone problem. use imap_parse_date_time() in util_parse_internal_date0(). (Proposed by Sam). * imap4d/imap4d.h: Added missing declarations. * mailbox/mbx_imap.c: Patch from Sam: added imap_parse_date_time(). imap_parse_date_time() returns tm/timezone pair. * mailbox/folder_mbox.c: added #include <sys/types.h>. It is needed on FreeBSD before inclusion of <dirent.h> * sieve/sieve.c: swapped arguments in a call to va_start(). 2001-06-15 Sergey Poznyakoff Bunch of patches provided by Sam Roberts: * imap4d/util.c: Fixed format bugs in util_parse.*_date functions. Use parse822_date_time() in util_parse_header_date(). Some changes to pacify gcc -Wall. * imap4d/util.c,imap4d/search.c,imap4d/imap4d.h: Rename the confusing functions: util_parse_header_date -> util_parse_822_date util_parse_rfc822_date -> util_parse_ctime_date include <ctype.h> 2001-06-14 23:01 Sam Roberts * mailbox/parse822.c: I think timezone info is now placed in struct tm correctly. * include/mailutils/parse822.h: Prototypes for functions to parse rfc822 date-time. * sieve/: Makefile.am, test.c: Patches from Sergey to make the auto* stuff work, now uses lex/yacc portably, and puts all the necessary files into the distribution. * sieve/ylwrap: Portable wrapper for lex/yacc invocations, by Tom Tromey <tromey@cygnus.com>, modified by Sergey Poznyakoff <gray@farlep.net> to replace yy prefixes, so multiple grammers can co-exist. * sieve/sieve.c: Define EOK ifndefed. * examples/showmail.c: No longer relevant to the current APIs. * examples/mbox-dates.c: GNU indented. * examples/addr.c: GNU indented * examples/.cvsignore: Added example executables. * examples/mbox-explode.c: Made so it now saves all the attachments from all the messages in a folder. Also GNU indented. * doc/envelope.texi: Added some text to the envelope docs, still incomplete. * doc/url.texi: Noted the IMAP url syntax. * doc/mailutils.texi: Some of the RFCs were missing, or miscategorized in the references sect. * doc/.cvsignore: Ignoreing files. * doc/rfc1939.txt: Was checked in with DOS line terminators, converted to Unix. 2001-06-11 Alain Magloire * imap4d/util.c (util_msgset): When '*' was define in the set it was not added to the count. Bug reported by Jakob Kaivo. 2001-06-09 Alain Magloire * mailbox2/pop3/pop3_open.c: Remove for pop3_connect.c * mailbox2/pop3/pop3_close.c: Remove for pop3_disconnect.c * mailbox2/pop3/pop3_connect.c: New. * mailbox2/pop3/pop3_disconnect.c: New. * mailbox2/include/mailutiils/error.h: New macro MU_ERROR_OPERATION_CANCELED * mailbox2/include/mailutils/pop3.h: Move the enum state in sys/pop3.h 2001-06-09 Sam Roberts * rfc1738.txt, rfc2045.txt, rfc2046.txt, rfc2047.txt, rfc2049.txt, rfc2088.txt, rfc2111.txt, rfc2192.txt, rfc2193.txt, rfc2221.txt, rfc2298.txt, rfc2342.txt, rfc2368.txt, rfc2384.txt, rfc2821.txt, rfc2822.txt, rfc3028.txt, rfc821.txt, rfc822.txt: These RFCs are relevant to mailutils, and many (all?) are referenced in the mailutils documentation. 2001-06-09 Alain Magloire * examples/mbox-explode.c: message_save_attachment, should take the part. Continue if the message does have a Date or Subject field. * mailbox/mapfile_stream.c (_mapfile_open): Identation. 2001-06-09 Alain Magloire * mailbox/tcp.c (_tcp_get_fd): Buglet, comparing fd against EINVAL instead of -1. * mailbox2/pop3/pop3_apop.c: New. * mailbox2/pop3/pop3_capa.c: New. * mailbox2/pop3/pop3_close.c: New. * mailbox2/pop3/pop3_create.c: New. * mailbox2/pop3/pop3_dele.c: New. * mailbox2/pop3/pop3_destroy.c: New. * mailbox2/pop3/pop3_iterator.c: New. * mailbox2/pop3/pop3_list.c: New. * mailbox2/pop3/pop3_lista.c: New. * mailbox2/pop3/pop3_noop.c: New. * mailbox2/pop3/pop3_open.c: New. * mailbox2/pop3/pop3_pass.c: New. * mailbox2/pop3/pop3_quit.c: New. * mailbox2/pop3/pop3_readline.c: New. * mailbox2/pop3/pop3_response.c: New. * mailbox2/pop3/pop3_retr.c: New. * mailbox2/pop3/pop3_rset.c: New. * mailbox2/pop3/pop3_sendline.c: New. * mailbox2/pop3/pop3_stat.c: New. * mailbox2/pop3/pop3_stream.c: New. * mailbox2/pop3/pop3_timeout.c: New. * mailbox2/pop3/pop3_top.c: New. * mailbox2/pop3/pop3_uidl.c: New. * mailbox2/pop3/pop3_uidla.c: New. * mailbox2/pop3/pop3_user.c: New. * mailbox2/tcp.c: New. * mailbox2/iterator.c: New. * mailbox2/stream.c: New. * mailbox2/pop3/pop3client.c: Test case should probably somewhere else in example/ perhaps? 2001-06-09 Alain Magloire * mailbox2/*: First attempt to define the new API. POP3 was implemented. 2001-06-07 Sam Roberts * .cvsignore, AUTHORS, COPYING, Makefile.am, NEWS, README, addr-lex.l, addr.y, comparator.c, comparator.h, exitcodes.h, hmac-md5.h, imparse.c, imparse.h, interp.c, interp.h, md5.c, md5.h, md5global.h, message.c, message.h, parseaddr.c, parseaddr.h, script.c, script.h, sieve-gram.y, sieve-lex.l, sieve.c, sieve_err.c, sieve_err.h, sieve_interface.h, svfield.c, svfield.h, sysexits.h, test.c, tree.c, tree.h, util.c, util.h, xmalloc.c, xmalloc.h: Initial commit of the port of CMU's sieve engine. It builds, and some actions work, but has seen very little use. 2001-06-03 Sam Roberts * mailbox/file_stream.c,mailbox/mapfile_stream.c: Return EINVAL for meaningless combination of MU_STREAM_READ + WRITE. 2001-06-03 Alain Magloire * doc/*; Bunch of typos corrected. Patch from Thomas Fletcher. 2001-06-02 Sam Roberts * mailbox/parse822.c,include/mailutils/parse822.h: functions to parse rfc822 date-time. * examples/mbox-explode.c: example of saving all mime attachments for messages in a mailbox. * examples/mbox-dates.c: example of using the date-time parser, it prints all the dates in a mailbox that it can't parse. * examples/Makefile: makes the mbox-* examples. 2001-06-01 Alain Magloire * mailbox/mbx_pop.c (pop_writeline): if buffer is NULL noop. 2001-06-01 Sergey Poznyakoff * imap4d/search.c: case-insensitive comparison for text fields. Error checking for stray symbols at the end of criteria. * imap4d/util.c: util_strcasestr() function. Functions for converting between text and integer representation of attributes. Split util_parse_internal_date: the helper function util_parse_internal_date0 also returns the pointer to the location in the string where parsing stopped. * imap4d/util.h: protos for util_strcasestr() and util_parse_.*_date() functions. * imap4d/imap4d.c: force ofile to be line-buffered, so command continuation requests are immediately visible. * imap4d/append.c: implemented. Currently this needs the helper function mailbox_destroy_folder(), so that mailbox_set_stream does its work. Also the situation with message attributes needs to be cleared. 2001-06-01 Alain Magloire * mailbox/debug.c(debug_print): Noop is format is NULL; * mailbox/mbx_imap.c (imap_messages_count): Hack! Force a reconnect if the server timeout on us. This is not the right approach and does not work well, fix later. (message_operation): Check if selected is not null, first. * mailbox/folder_imap.c (folder_imap_create): Wrong state. * mailbox/mime.c: Pass down the return value if not ENOENT. 2001-05-30 Dave Inglis * mailbox/mbx_pop.c (CHECK_ERROR): Force the mailbox to call connect again when an error occured. For example the QPopper(Qalcomm) POP3 server timeout very quickly, 30 seconds violating the RFC. So when Readin the stream again we reconnect. 2001-05-30 Dave Inglis * mailbox/filter_trans.c (base64_decode): The variable should be unsigned char not signed char. By default gcc treats a declaration of "char*" like "signed char*", CC Watcom did not. (base64_encode): Likewised. * mailbox/mime.c: Read 'itl the end of the stream. 2001-05-29 Sergey Poznyakoff * imap4d/uid.c, imap4d/search.c: support for UID SEARCH command; * imap4d/util.c: forgotten fix to util_msgset(). 2001-05-27 Sergey Poznyakoff * imap4d/search.c: Added missing <message set> condition. 2001-05-27 Sergey Poznyakoff * imap4d/imap4d.c, imap4d/capability.c, imap4d/copy.c, imap4d/create.c, imap4d/delete.c, imap4d/imap4d.h, imap4d/list.c, imap4d/rename.c, imap4d/select.c, imap4d/status.c, imap4d/namespace.c (added): implemented NAMESPACE (rfc2342) support * imap4d/util.c: added util_normalize_path() function. util_msgset() bailed out at 1:1 -- fixed. Added util_parse_internal_date(), util_parse_header_date(), util_parse_rfc822_date(). * imap4d/bye.c: typo in diagnostic output * imap4d/noop.c: issue unsolicited response (as per rfc2060) * imap4d/select.c: ditto * imap4d/store.c: set MU_ATTRIBUTE_MODIFIED on a message, so expunge will know it was modified. * imap4d/search.c: implemented. Charsets other than US-ASCII are not supported, though. 2001-05-27 Sam Roberts * mailbox/address.c: removed unfolding of lines at a NL before parsing. * mailbox/parse822.c: consider LF and CRLF equivalent for purposes of unfolding lines. 2001-05-23 Alain Magloire * mailbox/mbx_default.c (mailbox_create_default): Check for URL in the mailbox name. 2001-05-23 Dave Inglis * mailbox/mime.c (_mimepart_body_read): Use stream_is_seekable() to detect if the stream is POP for example and read 'til the end. (mime_get_part): Reuse the stream the original stream flags on the newly created message. Fix and patches provided by Dave Inglis. 2001-05-23 Sergey Poznyakoff * pop3d/user.c: check for NULL return from getpwnam() * imap4d/login.c: Likewised. 2001-05-21 Alain Magloire GNU md5 is GPL, but we agreed that the libraries should fall under LGPL. Same goes for basename() and pretty much everything under lib/*.[ch] * mailbox/message.c (message_get_uidl): Remove the dependency from GNU md5. * mailbox/md5-rsa.c: New File. * mailbox/md5-rsa.h: New File. * mailbox/attachment.c (message_create_attachment): Remove the dependency from lib/basename.c * mailbox/mbx_mbox.c (mbox_tempfile): Remove the dependency from lib/basename.c * lib/signame.c: Replace in favor of the wellknown strsignal(). * lib/strsignal.c: New file, use the mu_signame() written by Sergey. * pop3d/signal.c: Use strsignal() unconditionnaly. * imap4d/signal.c: Use strsignal() unconditionnaly. * configure.in: autoconf-2.50 is having difficulty parsing a long AC_CHECK_LIB, break it in two. Check for strsignal() * doc/auth.texi: Bug fixes in texinfo. * doc/Makefile.am: Commented the ex-address.texi generation. * doc/ex-address.texi: New file. 2001-05-21 Alain Magloire * configure.in, imap4d/signal.c, pop3d/signal.c: sys_siglist is not defined on some systems (namely, Solaris). * lib/signame.c: (added) Provide mu_signame() function to convert signal number to string representation. * lib/strtok_r.c: bugfix 2001-05-19 Alain Magloire * AUTHORS: Update to reflect Sergey and Sam contributions. 2001-05-20 Sergey Poznyakoff * mailbox/mbx_mboxscan.c:* Bug in mailbox/mbx_mboxscan.c made the stuff coredump upon encountering more than one subject in the header. * pop3d/pop3d.c: Typo. 2001-05-19 Sam Roberts * mailbox/parse822.c: parse822 is a little smarter in the way it handles CRLF. 2001-05-19 Alain Magloire * mailbox/mbx_default (mailbox_create_default): Base on a suggestion/patch by Sam Roberts to provide tilde, plus and equal (~ + = ) expansion. * mailbox/address.c: Unfold field-bodies with NL. * mailbox/parse822.c (parse822_field_body): New function. (parse822_field_name): New function. * pop3d/user.c: Use mailbox_create() now instead of mailbox_create_default. * pop3d/apop.c: Likewise. 2001-05-16 Dave Inglis * mailbox/mime.c (_mime_parse_mpart): Better check for the boundary. 2001-05-14 Sergey Poznyakoff * pop3d/user.c: After unsuccessful authorization frees cmd twice, 2001-05-13 Alain Magloire * imap4d/fetch.c: Lots of bug fixing. To many to enumerate. * imap4d/imap4d.h: New prototypes. * imap4d/login.c: syslog() the user. * imap4d/select.c: Remove the call to mailbox_create_default. * imap4d/util.c (util_getitem): New function. (util_send_qstring): New function. (util_send_literal): New function. * mailbox/address.c: Parse822 can not handle '\n' inside the buffer, prune them out before. * mailbox/mime.c (_mime_parse_mpart_message): The mime->stream was destroy when doing mime_get_part () better get it every time. (_mime_body_fd): Likewised. * mailbox/smtp.c: Do not close the stream on destroy. 2001-05-11 Alain Magloire * imap4d/fetch.c: More cleanup in the bodystructure code, arrange response indentation etc ... * impa4d/utils.c (util_send_string): New helper function. 2001-05-10 Alain Magloire * imap4d/fetch.c: Implemented INTERNALDATE. * mailbox/mbx_imap.c (imap_envelope_date): ctime() always append a newline, nuke it. * mailbox/stream.c (stream_read): If the amount requested is bigger then the buffer cache size, bypass the buffering mechanism. 2001-05-09 Alain Magloire Take the missing pieces from the pop3d and make the imap4d a standalone daemon. * imap4d/fetch.c: Remove fetch_body_peek(). and use fetch_body() instead. (fetch_operation): Malloc the entire message... not good. * imap4d/bye.c: New file. * imap4d/imap4d.c: Put the networking code taken from pop3d.c. * imap4d/lsub.c: Implemented. * imap4d/subscribe.c: Implemented. * imap4d/unsubscribe.c: Implemented. * pop3d/pop3d.c: pop3d_usage() move from extra.c * pop3d/signal.c: pop3d_signal () move from extra.c * mailbox/url_imap.c: It was not checking for the port number. * mailbox/filter_rfc822.c: Check for the lines if available. 2001-05-07 Alain Magloire Now we can have multiple access to the mailbox and the server will update the mailbox and send the unsollicited responses. This is implemented in imap4d/sync.c. * imap4d/copy.c: Move the code into imap4d_copy0() to allow the use of UID COPY. (imaprd_copy0): New function. * imap4d/fetch.c: Define a new structure command for FETCH. (fetch_getcommand): New function. (imap4d_fetch0): New function to allow the use of UID COPY. (fetch_envelope0): New function to permit to reuse the function in bodystructure. (fetch_bodystructure): Implemented. (fetch_bodystructure0): The implementation. (bodystructure): The helper function for fetch_bodystructure. * imap4d/imap4d.c (imap4d_mainloop): call imap4d_sync() in the mainloop. Now use FILE *ifile. * imap4d/imap4d.h: Update prototypes. Define ERR_NO_MEM and ERR_NO_OFILE. * imap4d/select.c (imap4d_select0): Call imap4d_sync() to update. * imap4d/store.c (ima4d_store): Cal imap4d_sync_flags() to update the flags in the uid_table. * imap4d/uid.c: Implemented. * imap4d/util.c (imap4d_readline): Use fgets() and deal with literals send from the client. * imap4d/sync.c: New file. * include/mailutils/header.c: Added some new headers. * mailbox/attribute.c (attribute_copy): Do a shalow copy. * mailbox/file_stream.c: Check if FILE * is null in all functions. * mailbox/mailbox.c (mailbox_is_updated): Should not return ENOSYS but rather 1. 2001-05-07 Sam Roberts * mailbox/parse822.c: Now allow a unix mailbox in an address. * include/mailutils/parse822.h: Declare the function to parse them. * doc/address.texi: Document the fact. * doc/Makefile.am: Automatically build the example code from addr.c. * examples/addr.c: And update the parser test. * examples/Addrs.good: Update the parser test. 2001-05-03 Sam Roberts * mail/mail.c: Typo 2001-05-03 Alain Magloire * argp/argp-help.c (hol_entry_help): Some compiler like Watcomm can not initialize a local structure struct .. = { .. }. Do it explicitely field by field. * argp/arpg-parse.c: Watcomm choke on N_() macro. (parser_init): Watcomm does not like operation on a void * pointer. * imap4d/login.c: Cast the return of crypt(), since some platforms do not provide a prototype in <unistd.h> * pop3d/user.c: Cast the return of crypt(), since in may not be declare in <unistd.h>. * lib/snprintf.c: Use only __STDC__ to detect <stdarg.h> * lib/snprintf.h: Use only __STDC__. * mail/mail.h: The global variable should be declare extern. * mail/pipe.c: Use 512 buffer instead of BUFSIZ, go easy on the stack. * mail/print.c: Use 512 buffer instead of BUFSIZ, go easy on the stack. * mail/write.c: Use 512 buffer instead of BUFSIZ, go easy on the stack. * mailbox/folder_imap.c: Declare strtock_r (). 2001-05-03 Sergey Poznyakoff * pop3d/user.c: Misplace parentheses around the mailbox_xx() calls. Do not free (buf) since it is now static storage. Unfortunately most of the pam modules do openlog() on their own, thus after authentication all logging output flows to where the last pam module has directed it, which is usually `auth' facility. Put back closelog()/openlog(). * pop3d/pop3d.h: ifile is now FILE *. pop3d_realine () take FILE * as a prototype. * pop3d/pop3d.c (pop3d_mainloop): Refresh lock, pop3d_touchlock(). Register SIGALRM in the child. Do not free (buf) since it is now static storage. * pop3d/extra.c (pop3d_readline): Change to use fgets () and alarm (). With small modification from Alain. (pop3d_signal): ofile will be NULL in the *child* process: whereas in the parent one, ofile will always be NULL, since it lives in the BSS (FILE *ofile;) and gets initialized only in the child process. Thus, when the parent receives any signal, SIGTERM for example, it does pop3d_abquit(ERR_SIGNAL) and dies doing fprintf(ofile, ...) 2001-05-02 Alain Magloire Some of the Makefile.am contain gcc specific options like -Wall, -pedantic or -ansi remove them. * configure.in: Check for stdarg and sysconf. * mailbox/mime.c (_mime_set_content_type): Delayed the creation of the header-field content-type until the message is requested via mime_get_message(). * pop3d/lock.: new File to implement the locking. * pop3d/apop.c: Rearrange the code around the #ifdefs to be clearrer. Make sure that when we use strncpy() that the buffer is null terminated. Added the locking propose by Sergey to apop. * pop3d/capa.c: Announce we support PIPELINING. * pop3d/extra.c (pop3d_abquit): Remove ERR_DEAD_SOCK. Remove the extra fflush(), the call to exit() always flush the buffers. (pop3d_readline): Implement PIPELINING. * pop3d/pop3d.c: Remove the typedef struct sockaddr SA for more clarity since it is not use that often. port is not longer a global variable. children should have the volatile qualification. 2001-04-29 Alain Magloire * pop3d/extra.c (pop3d_readline): Modify the loop to be able to support PIPELINING. * pop3d/capa.c: Advertise that we support PIPELINING. 2001-04-29 Sergey Poznyakoff Return values of all signal handlers are changed to RETSIGTYPE and configure.in is modified accordingly. This is more portable. * configure.in: New Macro AC_TYPE_SIGNAL. * mailbox/locker.c (locker_lock): while trying to read pid value from the pidfile passed wrong buffer length to read() call, namely: read(fd, buf, sizeof (pid_t)). 2001-04-29 Sergey Poznyakoff I have modified locker.c to implement reference count. The struct _locker is now: struct _locker { int fd; int refcnt; char *fname; int flags; }; The refcnt member gets incremented each time locker_lock is called and decremented each time locker_unlock is called. Actual locking is performed only if refcnt == 0 on entry to locker_lock. Similarly, unlocking is performed only when refcnt gets decremented to 0 by locker_unlock. Also I have added basic support for NFS-secure locking. * mailbox/locker.c: Reference count implementation. 2001-04-25 Alain Magloire * imap4d/store.c: First implementation. * mailbox/attribute.c (attribute_unset_flags): New function. 2001-04-23 Sergey Poznyakoff * mailbox/mbx_mbox.c (mbx_expunge): It assumes that mbox_get_message() will place the pointer to message into mum->message member. But mbox_get_message() relies on 1-based message numbers, whereas `mum' pointer is obtained using 0-based indexing. 2001-04-23 Alain Magloire Sergey Poznyakoff noted: When the user's mailbox has zero size, mmap fails on Solaris. On GNU/Linux it return NULL buf subsequent munmap fails. * mailbox/mapfile_stream.c: To take care of this, mfs->ptr is set to NULL for len == 0; *mailbox/mbx_mbox.c (mbox_is_updated): Should I have return 0 (FALSE) when size change. 2001-04-23 Sergey Poznyakoff Several sources from mailbox subdirectory call fprintf(stderr,...) to issue error messages. As the stderr usually gets connected to the output socket, the client program receives all these error messages and gets confused, since they do not start with rfc-compliant +OK, -ERR keywords. So I have added a module error.c and changed all these fprintf's to error()'s. Actual function that ouputs the messages can be supplied by the application using error_set_print() call. 2001-04-23 Alain Magloire * pop3d/*.[ch]: Rename all the pop function pop3d_xx() instead of pop3_xx() to be consistent with imap4d/*. * mailbox/mbx_pop.c (pop_user): This is sudden death; for many pop servers, it is important to let them time to remove locks or move the .user.pop files. This happen when we do BUSY_CHECK(). For example, the user does not want to read the entire file, and wants start to read a new message, closing the connection and immediately contact the server again, and we'll end up having "-ERR Mail Lock busy" or something similar. To prevent this race condition we sleep 2 seconds. 2001-04-23 Sergey Poznyakoff It is often convenient to separate log outputs from POP and SMTP servers. --with-log-facility flag which allows to specify to which log facility the loggin output should be directed. System administrators often prefere to have more information about unsuccessfull authentications. I have added more verbose logging to pop3d/user.c. Both failed attempts and possible account probes (USER immediately followed by QUIT) are logged. Made pop3d to be less verbose about its WELCOME prompt. When the symbol TERSE_MODE is defined, pop3d introduces itself just as +OK POP3 ready <apop_hash> insead of divulging its type and version. This is a bit paranoid, but it is better to be on the safe side... * configure.in: ARGPINC gets assigne a relative path, due to which the compilation fails if the package is configure with --srdir=<path> option. * configure.in: --with-log-facility new option. * acconfig.h: LOG_FACILITY * doc/mailutils.texi: Typo. * mailbox/mapfile_stream.c: Define MAP_FAILED. * pop3d/extra.c (pop3_abquit): new case ERR_MBOX_SYNC. (pop3_signal): Syslog the reason. * pop3d/pop3d.c (pop_mainloop): Syslog the hostname of the user on connect. (pop3_daemon): Log to many children. Lacks call to exit(), so if pop3d is run as a daemon, any child after exiting from pop3_mainloop tries to accept() from already closed socket and issues spurious error messages. (pop3_mainloop): Check if the mailbox is uptodate if not and the size shrink, bail out. Do not send version number. * pop3d/pop3d.h: ERR_MBOX_SYNC define. WELCOME removed. * pop3d/signal (pop3_sigchld): Lacks signal() call, due to which the signal handler gets cleared after first SIGCHLD and all subsequent children, when finished, just hang around like zombies. * pop3d/user.c: Log to LOG_FACILITY all the errors. 2001-04-23 Alain Magloire Sergey Poznyakoff pointed out that errno changes depending if _REENTRANT is set or not. So for enable thread we take the approach of always defining _REENTRANT. He also noted that when in standalone the child was not exiting. * acconfig.h: Define _REENTRANT. * configure.in: Check for sigaction(). * configuire.in: AC_DEFINE(_REENTRANT). * doc/Makefile.am: add rfc2060-errata. * doc/rfc2060-errata: New File. * imap4d/copy.c: First Implementation. * imap4d/status.c: First implementation. * mailbox/file_stream.c (_file_open): For CREAT, close the fd if we failed. * mailbox/folder_imap.c: Remove the _REENTRANT. * mailbox/mbx_mbox.c: Remove the _REENTRANT. * mailbox/monitor.c: Remove the _REENTRANT. * pop3d/pop3d.c (main): maxchildren boosted to 20. (pop3_daemon_init): Use sigaction() for SIGCHLD, the sematics of signal() is unreliable on some platforms. * pop3d/signal.c: Save errno. 2001-04-22 Alain Magloire * imap4d/create.c: First implementation. * imap4d/delete.c: First implementation. * imap4d/list.c: First implementation. * imap4d/rename.c: First implementation. * imap4d/util.c: New functions. (util_tilde_expansion): expand ~. (util_unquote): Remove surrounding double quotes. (util_getfullpath): Expand the path to absolute. * imap4d/fetch.c: Did not cycle throught the items. (fetch_send_address): Patch from Sam Roberts, did not use the index. * mailbox/attachement.c (message_unencapsulate): Little buglet strncasemp() passing the wrong size. 2001-04-19 Alain Magloire * mailbox/smtp.c(smtp_readline): Because of the buffering mechanism, we must maintain the offset. * imap4d/list.c: partially implemented the LIST command. * imap4d/imap4d.c: homedir new global variable. * imap4d/login.c: same ${HOME} in homedir. * imap4d/util.c (util_getword): Be aware of the quotes. * lib/fnmatch.c: New replacement file. * lib/fnmatch.h: New replacement file. * configure.in: Check for fnmatch(). 2001-04-18 Alain Magloire Finally took time to put the code in from Jakob first draft, in an email excerpt: states is the valid states for a command (eg. LOGIN is only valid in non-authenticated state, SELECT is valid in authenticated or selected). success is the state to enter when the command completes successfully (STATE_NONE means no change) and failure is the state to enter when the command fails. * imap4d/*.c: All the commands check there state. * imap4d/fetch.c: Cleanup the fetch code, and broke the fetch_operation() routine in multiple routines. (fetch_message): New function. (fetch_header): Likewised (fetch_content): Likewised (fetch_io): Likewised (fetch_header_fields): Likewised (fetch_header_fields_not): Likewised (fetch_send_address): Likewised * mailbox/header.c: Some functions were usefull while programming the imap server, put them here. (header_aget_value): New function. (header_aget_field_name): New function. (header_aget_field_value): New function. * mailbox/memory_stream.c: New file, implemented a malloc() buffer that you can access via the stream interface. * mailbox/file_stream.c: Remove spurious checks. * mailbox/mapfile_stream.c: Remove spurious checks. (_mapfile_read): check if there is no newline left. 2001-04-16 Alain Magloire To get things to compile on Solaris, change configure to check for -lpthread since in libc the thread functions are defined but all return ENOSYS, you need to explicitely link with -lphtread. the ctype functions is*() arguments should be explicitely cast since Solaris use them as indexes. __REENTRANT as to be define if compile with support for threads. Never realize this but setenv() is a BSD/GNU thing, so took a variant from libiberty to cope. * configure.in: Check for setenv. First check if -lphtread is ok. * lib/setenv.c: New functions. * lib/Makefile.am: add setenv.c in EXTRA_DIST. * imap4d/imap4d.h: Include <alloca.h> * mailbox/attachment.c: Include <alloca.h> * (_header_get_param): isspace() cast argument. * mail/mail.h: check if <paths.h> is available if not define _PATH_SENDMAIL=/usr/lib/sendmail. * mailbox/folder_imap.c: if pthread available, define _REENTRANT. Include <alloca.h>. (imap_bodystructure0): isdigit() cast argument. * mailbox/mbx_mbox.c: if pthread available, define _REENTRANT. Include <alloca.h>. * mailbox/parse822.c: isdigit() cast argument unsigned. 2001-04-15 Alain Magloire The FILE* stream "stdout" is not an lvalue so it is an error to 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. 2001-04-15 Alain Magloire Create a argp directory, it contains the necessary files to build a standalone libargp.a * argp: New directory. argp-ba.c, argp-eexst.c, argp-fmtstream.c, argp-fmtstream.h argp-fs-xinl.c, argp-help.c, argp-namefrob.h, argp-parse.c argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, pin.c. * mail/mail.c: Comment out the code that use readline specifics WITH_READLINE. * mail/mail.h: Likewised. * mail/util.c: Likewised. 2001-04-15 Alain Magloire * Makefile.am: Add argp in the list of subdirs. * configure.am: Check for argp.h and look for argp_parse(). * lib/strchrnul.c: New function. * lib/strndup.c: New function. * lib/strnlen.c: New function. * lib/vasnprintf.c: New function. * lib/getopt.c: Updated. * lib/getopt1.c: Updated. * lib/getopt.h: Updated. * frm/Makefile.am: Remove -DTESTING in CFLAGS. * from/Makefile.am: Remove -DTESTING in CFLAGS. Add AUTOMAKE_OPTIONS. * imapd/Makefile.am: Likewised. * pop3d/Makefile.am: Likewised. * mail/Makefile.am: Likewised. Added ARGPLIB macro 2001-04-14 Sam Roberts * examples/{Makefile,Addrs,addr.c,Addrs.good}: address test f/w. * include/mailutils/address.h,mailbox/{address.c,parse822.c}: now stuff a group name into an _address, and added a function to do a quick check if it is a group. * mailbox/parse822.c: fixed bug where ",sam@foo.bar" wasn't valid. 2001-04-14 Alain Magloire * mailbox/folder_imap.c: When calling imap_writeline () the cookie for the tag should be unsigned %d --> %u. (imap_send) : The number of bytes in memmove was wrong. * mailbox/mbx_imap.c: Some duplicate degug calls MAILBOX_DEBUG0() removed. (attribute_string): IMAP does not have a \\Read flag it should be the same as \\Seen so attribute_read() == attribute_seen(). (flag_string): New function. (imap_attr_set_flags): Use flag_string(), instead. * mailbox/include/imap0.h: CLEAR_STATE() should also deselect the current mailbox. * mailbox/mbx_pop.c (pop_write): The number of bytes in the memmove was wrong. * imap4d/imap4d.h: Add HAVE_SECURITY_PAM_APPL_H. * imap4d/login.c: PAM_ERROR wrongly define. * imap4d/expunge.c: Initialise variable sp. * imap4d/logout.c: Initialise variable sp. * imap4d/noop.c: Initialise variable sp. * mailbox/attachement.c (message_create_attachment): Use base_name(). * mailbox/mbx_mbox.c (mbox_tmpfile): Use base_name(). * configure.in: AC_REP_FUNC(vasprintf strcasecmp strncasecmp). * include/mailutils/Makefile.am: Add property.h, parse822.h. * lib/vasprintf.c: Taken from libit. * lib/basename.c: Taken from libit/fileutils. * lib/Makefile.am.c: Always use our basename(base_name). (AM_INIT_AUTOMAKE): Change version to 0.0.9 2001-04-13 Sam Roberts QNX needed to include <strings.h> for many of the useful string functions also to define _QNX_SOURCE so <sys/time.h> doesn't have an internal warning. * configure.in: Check for libgen.h. * imap4d/imap4d.h: Define __QNX_SOURCE. * mailbox/mime.c: wasn't including config.h * mailbox/attachment.c: QNX needed libgen.h for basename(), include <strings.h> if define. * mailbox/filter.c: Include <strings.h>. * mailbox/mbx_mbox.c: Include <strings.h>. * mailbox/folder_imap.c: Include <strings.h>. * mailbox/header.c: Include <strings.h>. * mailbox/property.c: Include <strings.h>. * mailbox/registrar.c: Include <strings.h>. * mailbox/url.c: Include <strings.h>. * mailbox/url_pop.c: Include <strings.h>. * pop3d/user.c: QNX says getspnam(char* n), I cast away the error. 2001-04-13 Sam Roberts * mailbox/parse822.c, include/mailutils/parse822.h: now can quote the local-part of and addr-spec, and a string. 2001-04-13 Sam Roberts * doc/address.texi: updated docs, now they match the parse822. * mailbox/parse822.c: small tweaks to the new parser, the changes made during the tidying over the last month were: - use C comments only. - don't use C++ reserved words. - fix is_digit() to be like the other is functions - Changed return codes to: . no mem (ENOMEM) . function wasn't called correctly, usually a missing argument (EINVAL) . invalid syntax found during parsing (ENOENT) . success == 0 - const-corrected the APIs - removed unnecessary (in C) casts. - mailbox_t* removed in favor of address_t. - fix handful of memory leaks detected by Alain. 2001-04-10 Alain Magloire * pop3d/retr.c (pop3_retr): Typo. * pop3d/top.c (pop3_top): No need to reallocate when sending the headers. * doc/mailbox.texi: Put the functions in alphabetic orders. 2001-04-10 Alain Magloire * mailbox/Makefile.am: filter_trans.c added, trans_stream.c deleted. * mailbox/attachment.c (message_create_attachment): use filter_create(). (message_save_attachment): use filter_create(). * mailbox/body.c (body_set_lines): Wrong comparison for the owner. * mailbox/mbx_mbox.c: Do not count the line separtor of part of the mailbox. * mailbox/url.c (url_is_same_sheme): New function. (url_is_same_user): New function. (url_is_same_path): New function. (url_is_same_host): New function. (url_is_same_port): New function. * mailbox/folder.c : Moved the is_same_*() functions in url.c they can be generally usefull. (is_same_sheme): Removed. (is_same_user): Removed. (is_same_path): Removed. (is_same_host): Removed. (is_same_port): Removed. * mailbox/folder_imap.c (folder_imap_create): New function, CREATE a new mailbox. (folder_imap_open): Calls folder_imap_create when the MU_STREAM_CREAT flag is set. * mailbox/mbx_imap.c: Appending messages implemented, if the message comes from the same imap folder, it is COPY otherwise APPEND. (is_same_folder): New function. (imap_append_message): Implemented. (attribute_string): New functions. (imap_copy_message): New function. * mailbox/include/imap0.h: New enum, IMAP_APPEND, IMAP_APPEND_ACK, IMAP_APPEND_CONT, IMAP_APPEND_SEND, IMAP_COPY, IMAP_COPY_ACK, IMAP_CREATE, IMAP_CREATE_ACK. 2001-04-06 Alain Magloire * mailbox/parse822.c: New parser. * include/mailutils/parse822.h: New file. * mailbox/address.c (address_create): Remove the old parsing and use parse822 as the underlying engine. (address_parse): Removed. (gettoken): Removed. (quotes): Removed. (address_get_personal): Remove the code to unquote, parse822 takes care if it. Return value when no field is ENOENT. (address_get_comments): Return value when no field ENOENT. (address_get_local_part): Return value when no field ENOENT. (address_get_domain): Return value when no field ENOENT. (address_get_email): Return value when no field ENOENT. (address_get_route): Return value when no field ENOENT. * mailbox/message.c (message_sender): Use parse822 to retrieve the email from the From: field. (message_set_mailbox): New function. * mailbox/misc.c : Removed the old parsing code. (gettoken): Removed. (parseaddr): Removed. * mailbox/include/misc.h : Removed parseaddr() prototypes. From Sam Roberts, the new parse822 parser.. 2001-04-04 Alain Magloire Introduction of the notion of filter_t object takes a stream and perform some filtering on it. All the decoding streams will move to this i.e. quoted-printable, base64 etc .. This scheme will also permit users to add to the list new filters. Still work in progress. * mailbox/Makefile.am : Add filter.c filter_rfc822.c. * mailbox/body.c : When creating a floating body i.e creating a temporary file, the stream was not "own" by the body_t. (_body_get_fd): Likewised. (_body_read):_ Likewised. (_body_readline): Likewised. (_body_write): Likewised. (_body_truncate): Likewised. (_body_size): Likewised. (_body_flush): Likewised. * mailbox/folder_imap.c (imap_literal_string): Check if the callback.buffer is NULL. (imap_body): Do no set the callback.type if "FIELDS" is part of the string. * mailbox/header.c: Remove the support for RFC822 it will be part of the filter_t object. * mailbox/mbx_mbox.c: Likewised. * mailbox/mailbox.c (mailbox_size): Rename to mailbox_get_size(). * mailbox/stream.c (stream_is_seekable): New function. (stream_set_property): New function. (stream_get_property): New function. * mailbox/trans_stream.c: Beautify. * include/mailutils/filter.h: new file. * doc/mailbox.texi: Updated. More changes to come. 2001-03-20 Alain Magloire * mailbox/folder_imap.c (imap_readline) : If the server goes away suddenly return an error. * mailbox/smtp.c (smtp_readline) : If the server goes away suddenly return an error. * mailbox/mbx_pop.c (pop_readline) : If the server goes away suddenly return an error. * mailbox/mbx_pop.c (pop_open) : The ticket comes from the folder. 2001-03-17 Vesselin Atanasov * configure.in: AC_REQUIRE is not .. required. Just call jm_FUNC_MALLOC and jm_FUNC_REALLOC. 2001-03-17 Alain Magloire Clean the property object, mailbox and mailer have property object that you can examine. Still a draft: the value of objects are ints. This feature was put in to help the imap4d server, in this protocol you can get a substring of the message starting from a certain offset. To make the coding of imap4d simpler the complexity was move to the * mailbox/smtp.c(smtp_readline): Because of the buffering mechanism, we must maintain the offset. * imap4d/list.c: partially implemented the LIST command. * imap4d/imap4d.c: homedir new global variable. * imap4d/login.c: same ${HOME} in homedir. * imap4d/util.c (util_getword): Be aware of the quotes. * lib/fnmatch.c: New replacement file. * lib/fnmatch.h: New replacement file. * configure.in: Check for fnmatch(). 2001-04-18 Alain Magloire Finally took time to put the code in from Jakob first draft, in an email excerpt: states is the valid states for a command (eg. LOGIN is only valid in non-authenticated state, SELECT is valid in authenticated or selected). success is the state to enter when the command completes successfully (STATE_NONE means no change) and failure is the state to enter when the command fails. * imap4d/*.c: All the commands check there state. * imap4d/fetch.c: Cleanup the fetch code, and broke the fetch_operation() routine in multiple routines. (fetch_message): New function. (fetch_header): Likewised (fetch_content): Likewised (fetch_io): Likewised (fetch_header_fields): Likewised (fetch_header_fields_not): Likewised (fetch_send_address): Likewised * mailbox/header.c: Some functions were usefull while programming the imap server, put them here. (header_aget_value): New function. (header_aget_field_name): New function. (header_aget_field_value): New function. * mailbox/memory_stream.c: New file, implemented a malloc() buffer that you can access via the stream interface. * mailbox/file_stream.c: Remove spurious checks. * mailbox/mapfile_stream.c: Remove spurious checks. (_mapfile_read): check if there is no newline left. 2001-04-16 Alain Magloire To get things to compile on Solaris, change configure to check for -lpthread since in libc the thread functions are defined but all return ENOSYS, you need to explicitely link with -lphtread. the ctype functions is*() arguments should be explicitely cast since Solaris use them as indexes. __REENTRANT as to be define if compile with support for threads. Never realize this but setenv() is a BSD/GNU thing, so took a variant from libiberty to cope. * configure.in: Check for setenv. First check if -lphtread is ok. * lib/setenv.c: New functions. * lib/Makefile.am: add setenv.c in EXTRA_DIST. * imap4d/imap4d.h: Include <alloca.h> * mailbox/attachment.c: Include <alloca.h> * (_header_get_param): isspace() cast argument. * mail/mail.h: check if <paths.h> is available if not define _PATH_SENDMAIL=/usr/lib/sendmail. * mailbox/folder_imap.c: if pthread available, define _REENTRANT. Include <alloca.h>. (imap_bodystructure0): isdigit() cast argument. * mailbox/mbx_mbox.c: if pthread available, define _REENTRANT. Include <alloca.h>. * mailbox/parse822.c: isdigit() cast argument unsigned. 2001-04-15 Alain Magloire The FILE* stream "stdout" is not an lvalue so it is an error to 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. 2001-04-15 Alain Magloire Create a argp directory, it contains the necessary files to build a standalone libargp.a * argp: New directory. argp-ba.c, argp-eexst.c, argp-fmtstream.c, argp-fmtstream.h argp-fs-xinl.c, argp-help.c, argp-namefrob.h, argp-parse.c argp-pv.c, argp-pvh.c, argp-xinl.c, argp.h, pin.c. * mail/mail.c: Comment out the code that use readline specifics WITH_READLINE. * mail/mail.h: Likewised. * mail/util.c: Likewised. 2001-04-15 Alain Magloire * Makefile.am: Add argp in the list of subdirs. * configure.am: Check for argp.h and look for argp_parse(). * lib/strchrnul.c: New function. * lib/strndup.c: New function. * lib/strnlen.c: New function. * lib/vasnprintf.c: New function. * lib/getopt.c: Updated. * lib/getopt1.c: Updated. * lib/getopt.h: Updated. * frm/Makefile.am: Remove -DTESTING in CFLAGS. * from/Makefile.am: Remove -DTESTING in CFLAGS. Add AUTOMAKE_OPTIONS. * imapd/Makefile.am: Likewised. * pop3d/Makefile.am: Likewised. * mail/Makefile.am: Likewised. Added ARGPLIB macro 2001-04-14 Sam Roberts * examples/{Makefile,Addrs,addr.c,Addrs.good}: address test f/w. * include/mailutils/address.h,mailbox/{address.c,parse822.c}: now stuff a group name into an _address, and added a function to do a quick check if it is a group. * mailbox/parse822.c: fixed bug where ",sam@foo.bar" wasn't valid. 2001-04-14 Alain Magloire * mailbox/folder_imap.c: When calling imap_writeline () the cookie for the tag should be unsigned %d --> %u. (imap_send) : The number of bytes in memmove was wrong. * mailbox/mbx_imap.c: Some duplicate degug calls MAILBOX_DEBUG0() removed. (attribute_string): IMAP does not have a \\Read flag it should be the same as \\Seen so attribute_read() == attribute_seen(). (flag_string): New function. (imap_attr_set_flags): Use flag_string(), instead. * mailbox/include/imap0.h: CLEAR_STATE() should also deselect the current mailbox. * mailbox/mbx_pop.c (pop_write): The number of bytes in the memmove was wrong. * imap4d/imap4d.h: Add HAVE_SECURITY_PAM_APPL_H. * imap4d/login.c: PAM_ERROR wrongly define. * imap4d/expunge.c: Initialise variable sp. * imap4d/logout.c: Initialise variable sp. * imap4d/noop.c: Initialise variable sp. * mailbox/attachement.c (message_create_attachment): Use base_name(). * mailbox/mbx_mbox.c (mbox_tmpfile): Use base_name(). * configure.in: AC_REP_FUNC(vasprintf strcasecmp strncasecmp). * include/mailutils/Makefile.am: Add property.h, parse822.h. * lib/vasprintf.c: Taken from libit. * lib/basename.c: Taken from libit/fileutils. * lib/Makefile.am.c: Always use our basename(base_name). (AM_INIT_AUTOMAKE): Change version to 0.0.9 2001-04-13 Sam Roberts QNX needed to include <strings.h> for many of the useful string functions also to define _QNX_SOURCE so <sys/time.h> doesn't have an internal warning. * configure.in: Check for libgen.h. * imap4d/imap4d.h: Define __QNX_SOURCE. * mailbox/mime.c: wasn't including config.h * mailbox/attachment.c: QNX needed libgen.h for basename(), include <strings.h> if define. * mailbox/filter.c: Include <strings.h>. * mailbox/mbx_mbox.c: Include <strings.h>. * mailbox/folder_imap.c: Include <strings.h>. * mailbox/header.c: Include <strings.h>. * mailbox/property.c: Include <strings.h>. * mailbox/registrar.c: Include <strings.h>. * mailbox/url.c: Include <strings.h>. * mailbox/url_pop.c: Include <strings.h>. * pop3d/user.c: QNX says getspnam(char* n), I cast away the error. 2001-04-13 Sam Roberts * mailbox/parse822.c, include/mailutils/parse822.h: now can quote the local-part of and addr-spec, and a string. 2001-04-13 Sam Roberts * doc/address.texi: updated docs, now they match the parse822. * mailbox/parse822.c: small tweaks to the new parser, the changes made during the tidying over the last month were: - use C comments only. - don't use C++ reserved words. - fix is_digit() to be like the other is functions - Changed return codes to: . no mem (ENOMEM) . function wasn't called correctly, usually a missing argument (EINVAL) . invalid syntax found during parsing (ENOENT) . success == 0 - const-corrected the APIs - removed unnecessary (in C) casts. - mailbox_t* removed in favor of address_t. - fix handful of memory leaks detected by Alain. 2001-04-10 Alain Magloire * pop3d/retr.c (pop3_retr): Typo. * pop3d/top.c (pop3_top): No need to reallocate when sending the headers. * doc/mailbox.texi: Put the functions in alphabetic orders. 2001-04-10 Alain Magloire * mailbox/Makefile.am: filter_trans.c added, trans_stream.c deleted. * mailbox/attachment.c (message_create_attachment): use filter_create(). (message_save_attachment): use filter_create(). * mailbox/body.c (body_set_lines): Wrong comparison for the owner. * mailbox/mbx_mbox.c: Do not count the line separtor of part of the mailbox. * mailbox/url.c (url_is_same_sheme): New function. (url_is_same_user): New function. (url_is_same_path): New function. (url_is_same_host): New function. (url_is_same_port): New function. * mailbox/folder.c : Moved the is_same_*() functions in url.c they can be generally usefull. (is_same_sheme): Removed. (is_same_user): Removed. (is_same_path): Removed. (is_same_host): Removed. (is_same_port): Removed. * mailbox/folder_imap.c (folder_imap_create): New function, CREATE a new mailbox. (folder_imap_open): Calls folder_imap_create when the MU_STREAM_CREAT flag is set. * mailbox/mbx_imap.c: Appending messages implemented, if the message comes from the same imap folder, it is COPY otherwise APPEND. (is_same_folder): New function. (imap_append_message): Implemented. (attribute_string): New functions. (imap_copy_message): New function. * mailbox/include/imap0.h: New enum, IMAP_APPEND, IMAP_APPEND_ACK, IMAP_APPEND_CONT, IMAP_APPEND_SEND, IMAP_COPY, IMAP_COPY_ACK, IMAP_CREATE, IMAP_CREATE_ACK. 2001-04-06 Alain Magloire * mailbox/parse822.c: New parser. * include/mailutils/parse822.h: New file. * mailbox/address.c (address_create): Remove the old parsing and use parse822 as the underlying engine. (address_parse): Removed. (gettoken): Removed. (quotes): Removed. (address_get_personal): Remove the code to unquote, parse822 takes care if it. Return value when no field is ENOENT. (address_get_comments): Return value when no field ENOENT. (address_get_local_part): Return value when no field ENOENT. (address_get_domain): Return value when no field ENOENT. (address_get_email): Return value when no field ENOENT. (address_get_route): Return value when no field ENOENT. * mailbox/message.c (message_sender): Use parse822 to retrieve the email from the From: field. (message_set_mailbox): New function. * mailbox/misc.c : Removed the old parsing code. (gettoken): Removed. (parseaddr): Removed. * mailbox/include/misc.h : Removed parseaddr() prototypes. From Sam Roberts, the new parse822 parser.. 2001-04-04 Alain Magloire Introduction of the notion of filter_t object takes a stream and perform some filtering on it. All the decoding streams will move to this i.e. quoted-printable, base64 etc .. This scheme will also permit users to add to the list new filters. Still work in progress. * mailbox/Makefile.am : Add filter.c filter_rfc822.c. * mailbox/body.c : When creating a floating body i.e creating a temporary file, the stream was not "own" by the body_t. (_body_get_fd): Likewised. (_body_read):_ Likewised. (_body_readline): Likewised. (_body_write): Likewised. (_body_truncate): Likewised. (_body_size): Likewised. (_body_flush): Likewised. * mailbox/folder_imap.c (imap_literal_string): Check if the callback.buffer is NULL. (imap_body): Do no set the callback.type if "FIELDS" is part of the string. * mailbox/header.c: Remove the support for RFC822 it will be part of the filter_t object. * mailbox/mbx_mbox.c: Likewised. * mailbox/mailbox.c (mailbox_size): Rename to mailbox_get_size(). * mailbox/stream.c (stream_is_seekable): New function. (stream_set_property): New function. (stream_get_property): New function. * mailbox/trans_stream.c: Beautify. * include/mailutils/filter.h: new file. * doc/mailbox.texi: Updated. More changes to come. 2001-03-20 Alain Magloire * mailbox/folder_imap.c (imap_readline) : If the server goes away suddenly return an error. * mailbox/smtp.c (smtp_readline) : If the server goes away suddenly return an error. * mailbox/mbx_pop.c (pop_readline) : If the server goes away suddenly return an error. * mailbox/mbx_pop.c (pop_open) : The ticket comes from the folder. 2001-03-17 Vesselin Atanasov * configure.in: AC_REQUIRE is not .. required. Just call jm_FUNC_MALLOC and jm_FUNC_REALLOC. 2001-03-17 Alain Magloire Clean the property object, mailbox and mailer have property object that you can examine. Still a draft: the value of objects are ints. This feature was put in to help the imap4d server, in this protocol you can get a substring of the message starting from a certain offset. To make the coding of imap4d simpler the complexity was move to the library. It is possible now by setting a property of the mailbox to make it output rfc822 stream i.e. "\r\n" terminated stream, the offset and the size are also in term of rfc822. * mailbox/property.c (property_set_int): Removed. * mailbox/property.c (property_set_long): Removed. * mailbox/property.c (property_set_double): Removed. * mailbox/property.c (property_set_set_value): Removed. * mailbox/property.c (property_set_get_value): Removed. * mailbox/property.c (property_add_propety): New function. * mailbox/property.c (hash): Renamed poperty_hash. * include/mailutils/property.h (struct property_list): New structure. * mailbox/include/mailbox0.h: new fields properties, properties_count. * mailbox/mailbox.c (mailbox_get_property): The function will create the proprety and add the default properties. (mailbox_destroy): The default poperties and property are freed. (mailbox_is_updated): Return ENOSYS if the argumets are wrong. (mailbox_scan): Return ENOSYS if the argumets are wrong. (mailbox_uidvalidity): Return ENOSYS if the argumets are wrong. (mailbox_uidnext): Return ENOSYS if the argumets are wrong. * mailbox/mbx_mbox.c (mbx_init): Set its default properties. (mbx_header_get_fvalue): Return the len, even if buffer is null. (mbx_body_read): If property rfc822 is set call mbx_body_readstream_rfc822 to the conversion. (mbx_body_readstream_rfc822): New function, do the conversion. (struct _mbox_message): Remove the stream field. added struct rfc822. (mbox_get_header_readstream): Removed. (mbox_header_size): Do the conversion if rfc822 set. (mbox_body_size): Do the conversion if rfc822 set. (mbox_get_message): Set the property on the header_t. * mailbox/mbx_pop.c (pop_init): Set its default properties. (pop_open): Remove MU_STREAM_POP flag obsolete. (pop_readline): Do the converstion if rfc822 is set. * mailbox/mbx_imap.c (mbx_imap_init): Set its default properties. * mailbox/folder_imap.c (folder_imap_open): Remove MU_STREAM_IMAP, no longer pertinent. (imap_readline): If propety rfc822 is set don't strip '\r'. * mailbox/header.c (header_set_property): New functions. (header_get_property): New functions. (header_destroy): Destroy property object. (header_get_value): If property rfc822 is set convert all "\n" to "\r\n". (header_read): If property rfc822 is et convert to \n to \r\n. (header_readline): If property rfc822 is et convert to \n to \r\n. (fill_blurb): Clear the function overloading, when the blurb is fill. * mailbox/include/header0.h: New field property. * include/mailutils/header.h: Added prototypes for header_set_property and header_get_property. * include/mailutils/stream.h: Remove the identification macros; MU_STREAM_IMAP, MU_STREAM_FILE, MU_STREAM_POP, it is part of the properties of each object. * mailbox/mailer.c (mailer_destroy): Free the properties. * mailbox/mailer.c (mailer_get_poperty): New function, return the property of the mailbox. * mailbox/smtp.c (_mailer_smtp_init): Set its default properties. * mailbox/sendmail.c (_sendmail_init): Set its default properties. * mailbox/include/Makefile.am: Add property0.h. 2001-03-09 Sam Roberts * include/mailutils/address.h: api for new parser, address_create0(), and to get route, local-part, and domain. * mailbox/address.c: implementation of 3 new get functions, first cut, needs cleanup * mailbox/include/address0.h: new members of _address, deleted one that looked unused. * mailbox/parse822.c: implementation of address_create0(), which handles groups, routes, and the hoary old comment phrase * addr/addr.c - parses addresses from its command line or stding using create() or create0(). * mailbox/mbx_imap.c: need strings.h on some systems, like Nto 2001-03-12 Sam Roberts * frm/frm.c (main): Changed to only print subject if header_get_value(SUBJECT) returned success, otherwise I assume it would print the stack. (usage): Corrected a tiny typo in usage message. (long_options): Added an option -f,--field that prints the named field in the mailbox, and nothing else. 2001-03-09 Alain Magloire * mailbox/Makefile.am: add property.c in the src list. * doc/mailutils.texi: add Sam to the list of acknowlegment. 2001-03-09 Sam Roberts * doc/address.texi: documented all the functions in address.h * doc/url.texi: corrected location or url.h header 2001-03-08 Sam Roberts * README-alpha: Be clearer on how to configure. * doc/address.texi : New File, description of address_t object. * doc/mailutils.texi : add include address.texi. 2001-03-03 Alain Magloire * imap4d/fetch.c (fetch_operation) : HEADER.FIELDS.NOT implemented. fetch_opertaion() take a new argument. * imap4d/util.c (util_upper) : New function string upper. * mailbox/heder.c: Added new functionnalities to help the imap4d fetch command. (header_get_field_count) : New function returns the number of header fields in the header. (header_get_field_name): New function returns the field name. (header_get_field_value): New function returns the field value. 2001-03-03 Alain Magloire * include/mailutils/address.h: s/_cplusplus/__cplusplus/g (include/mailutils/auth.h): Likewised. (include/mailutils/body.h): Likewised. (include/mailutils/debug.h): Likewised. (include/mailutils/header.h): Likewised. (include/mailutils/iterator.h): Likewised. (include/mailutils/list.h): Likewised. (include/mailutils/mailer.h): Likewised. (include/mailutils/message.h): Likewised. (include/mailutils/mime.h): Likewised. (include/mailutils/observer.h): Likewised. (include/mailutils/property.h): Likewised. (include/mailutils/registrar.h): Likewised. (mailbox/include/address0.h): Likewised. (mailbox/include/auth0.h): Likewised. (mailbox/include/body0.h): Likewised. (mailbox/include/debug0.h): Likewised. (mailbox/include/header0.h): Likewised. (mailbox/include/iterator0.h): Likewised. (mailbox/include/list0.h): Likewised. (mailbox/include/mailer0.h): Likewised. (mailbox/include/message0.h): Likewised. (mailbox/include/mime0.h): Likewised. (mailbox/include/observer0.h): Likewised. Pointed by Sam Roberts. 2001-02-28 Alain Magloire * mailbox/address.c (address_get_personal): Remove surrounding quotes. * mailbox/mbx_mbox.c (mbox_scan): If the mailbox is updated don't rescan again. (mbox_expunge): Same the uidvalidity in the header field "IMABase:" on the first message of the mailbox. * imap4d/fetch.c (fetch_envelope): Envelope imap4 command implemented. (fetch_send_address): New function. 2001-02-26 Alain Magloire * mailbox/mbx_imap.c (imap_submessage_size): New function to retrieve message size of attachments. * imap4d/fetch.c: More functionnality for the FETCH command. (fetch_operation): New operation. * imap4d/util.c (util_token): little helper function. 2001-02-25 Alain Magloire * lib/strtok_r.c: If there are no delimiters left save the old string and return NULL. * mailbox/folder_imap.c (imap_fetch): Finish imap FETCH command. (imap_rfc822): New Function. (imap_rfc822_text): New Function. (imap_rfc822_size): New Function. (imap_rfc822_header): New Function. (imap_uid): New Function. (imap_body): New Function. (imap_bodystructure0): Save the size. 2001-02-22 Alain Magloire * mailbox/property.c: New file. * include/mailutils/property.h: New file. * mailbox/mailbox.c (mailbox_get_property): New function, a first draft to let set "property" on a mailbox that can change its behaviour. * mailbox/include/mailbox0.h: New field in struct _mailbox, property. * sieve/lex-sieve.lex: Add LGPL banner. * sieve/gram-sieve.y: Add LGPL banner. 2001-02-22 Alain Magloire * sieve: New Directory. * sieve/lex-sieve.lex: RFC3028 tokenizer. * sieve/gram-sieve.y: RFC3028 grammar. 2001-02-20 Alain Magloire * mailbox/mailbox.c (mailbox_set_ticket): Those objects are now part of the folder if a folder is attached to the mailbox. (mailbox_set_authority: Likewise. (mailbox_set_stream): Likewise. * mailbox/mbx_imap.c (imap_message_read): If offset == 0, reset the lines to 0. (imap_body_read): Likewise. 2001-02-19 Alain Magloire * mailbox/mbx_pop.c (pop_body_read): Move the CHECK_BUSY higher it should be the first thing done. If the state is POP_NO_STATE reset the offset and the size to 0 i.e we are starting fresh. (pop_header_read): Likewise. (pop_message_read): Likewise. * mailbox/stream.c (stream_write): Don't call stream_flush(). 2001-02-04 Alain Magloire * mailbox/message.c (message_get_uid): Add message_get_uid() for the UID of the message (IMAP definition) and message_get_uidl() for the POP3 definition. * mailbox/attachment.c: Indentation fixes. * mailbox/file_stream.c: Make sure that the FILE* is close before opening. * mailbox/folder_imap.c: Use strcasecmp() not strcmp(). * mailbox/mailbox.c: Added mailbox_uidnext() and mailbox_uidvalidity. * mailbox/mapfile_stream.c: When munmap() failed we should check against MAP_FAILED, not NULL. * mailbox/mbx_imap.c: Implement imap_uidnext(), imap_uidvalidity() imap_message_uid(). * mailbox/mbx_mbox.c: Implement mbox_uidnext(), mbox_uidvalidity() mbox_message_uid(). * mailbox/mbx_mboxscan.c: Implement uidvalidity, it is save int the header of the first message, "X-IMAPbase: 127673838 12", a la c-client. Save UID, it is save in "X-UID". * mailbox/mbx_pop.c: Implement pop_messages_recent(), pop_message_unseen() and pop_uid(). * mailbox/trans_stream.c: Indentation fixes. * include/mailutils/message.h: New prototypes message_get_uid(), message_set_get_uid(). * include/mailutils/mailbox.h: New prototypes mailbox_uidnext(), mailbox_uidvalidity(). * lib/snprintf.c lib/snprintf.h: Put it under the LGPL term. * mailbox/imap4d/fetch.c: First draft implementation, very yucky. * mailbox/imap4d/select.c: First draft implementation. * mailbox/imap4d/util.c: Add util_msgset() and util_send(). Reuse of util_getcommand() for subcommands. * mailbox/pop3d/uidl.c: API change the call is message_get_uidl() to have UIDL POP3. 2001-02-03 Alain Magloire * mailbox/mailbox.c mailbox/mbx_mbox.c mailbox/mbx_imap.c: Implement mailbox_messages_recent() and mailbox_message_unseen(), this time as define by the IMAP rfc. 2001-02-02 Alain Magloire * mailbox/header.c: ENOENT was not return if the header was not found. * mailbox/mbx_mbox.c: When expunging check to see if the registar the path_record too. 2001-02-02 Alain Magloire * pop3d/extra.c (pop3_readline): Since the length of the string is known, we can use memcpy() and friends for string manipulations. memXXX() functions are builtin in GNU C (gcc) and are much faster then the strXXX() counterparts. Small change in the loop to take advantage of this. * pop3d/quit.c: The rfc1939 insist that after a QUIT, we must release any resources and close the connection: "Whether the removal was successful or not, the server then releases any exclusive-access lock on the maildrop and closes the TCP connection." This was not done if error occured while expunging, now we will close the connection and notify the client of the error(ERR_FILE). 2001-02-01 Alain Magloire "Premature Optimization Is The Root Of All Evil", Knuth. * mailbox/attachment.c: Typo should be "Content-Disposition" * mailbox/mbx_mbox.c mailbox/mbx_mboxscan.c mailbox/header.c: Attempt to optimze the header, header_get_fvalue() is created, The mailbox save/cache the most common headers, when doing a header_get_value(), header_get_fvalue() is call first hoping that the requested header was cache, if it fails we fall back to the usual parsing. The common elected headers are : From, To, Cc, Subject, Date, Content-Type, X-UIDL, X-UID. * mailbox/mailbox.c mailbox/mbx_mbox.c mailbox/mbx_imap.c: I've confuse the semantic of "unseen" and "recent", "unseen" means new mail, not recent. Renamed mailbox_recent_count() to mailbox_unseen_count(). * include/mailutils/mailbox.h: updated for mailbox_unseen_count() 2001-01-25 Alain Magloire * frm/frm.c: Forget to add --summary option and fix return status. When being very quiet just freopen(/dev/null, w, stdout). 2001-01-25 Alain Magloire * pop3d/capa.c: Add UIDL in the capability list. and update Copyrigth. * pop3d/pop3d.c: Remove mbox_record register, only need path_record. * pop3d/retr.c: When retrieve a message should be mark as read. since we do not strip out the header "Status:". * pop3d/top.c: Adjust stream_readline(). 2001-01-25 Alain Magloire While working on the new version of the API mailbox, Changelog was discontinued, since the API could literaly change overnight a maintenace of the entries were of a particular burden. The API of the library, and some utilities like pop3d are stable enough to restart normal entries. * mailbox/*: New Api to access mailbox. * include/mailutils: Public prototypes of the API. * frm/frm.c frm/Makefile.am: A clone of elm frm utility. * from/from.c from/Makefile.am: A utility to scan mailboxes. * pop3d/* : GNU pop3d server. 2000-05-19 Sean 'Shaleh' Perry <shaleh@debian.org> * libmailbox/mh.c: fleshed out mh_open() some more 2000-05-18 Sean 'Shaleh' Perry <shaleh@debian.org> * libmailbox/mh.c: fleshed out mh_open() some more 2000-05-15 Sean 'Shaleh' Perry <shaleh@debian.org> * libmailbox/*: ran some files thru emacs indent, I think I introduced some oddness with vi * libmailbox/mh.[ch]: new files, based on maildir the mh work is very empty -- just mh_open right now 2000-04-19 Jeff Bailey <jbailey@nisa.net> * configure.in: Test for limits.h and inttypes.h, add malloc and realloc checks. * m4/: New directory * m4/Makefile.am: New file to support directory * m4/malloc.m4: File to support lib/ directory * m4/realloc.m4: File to support lib/ directory * lib/Makefile.am: Distribute xalloc.h * lib/xalloc.h: New file to support xmalloc.c * lib/xmalloc.c: New version from sh-utils-2.0g * autogen.sh: Look in m4 for extra macros * doc/Makefile.am: Rearrange to quiet automake 2000-03-28 Jakob 'sparky' Kaivo <jkaivo@elijah.nodomainname.net> * pop3d/pop3d.c (main): handle SIGPIPE 2000-01-19 Sean 'Shaleh' Perry * mailbox/mbx_mh.c: some more code fleshing, still ugly * README README-alpha: updates, corrected README to list mailbox as LGPL 2000-01-19 Sean 'Shaleh' Perry * mailbox/mbx_mh.c: new file no header, no error checking, no hable englais * url/url_mh.[ch]: new files url support for MH mailboxes 2000-01-17 Sean 'Shaleh' Perry * examples/from.c: remove extraneous copyright notice 1999-12-15 Alain Magloire * url/url_mbox.h url/url_pop.h url/url_imap.h url/url_mailto.h New files. 1999-12-01 Alain Magloire * url/_cpystr.c url/chewurl.c url/url.c url/url_imap.c url/url_mailto.c url/url_mbox.c url/url_pop.c : New files, first attempt to define the URL API. * lib/Makefile.am: added xmalloc.c, xstrdup.c, xstrtol.{c,h} * lib/xmalloc.c lib/xstrdup.c lib/xstrtol.c lib/xstrtol.h : New files 1999-11-21 Jeff Bailey * doc/rfc*: Add. Standards followed should be included here. 1999-11-23 Jakob 'sparky' Kaivo * TODO: Mention Maildir * libmailbox/mailbox.c (mbox_init): new function * libmailbox/maildir.h: new file * libmailbox/maildir.c: new file * libmailbox/mailbox.c (mbox_open): uncommented maildir_open attempt 1999-11-15 Jeff Bailey * lib/ansi2knr.c lib/ansi2knr.h: Add * configure.in: Add AM_C_PROTOTYPES * libmailbox/Makefile.am: Add ansi2knr handling 1999-11-08 Sean 'Shaleh' Perry * cleaned up some of the automake autoconf magic for non-Linux 1999-11-07 Sean 'Shaleh' Perry * TODO: restructuring, now split into sections * libmailbox/mailbox.c libmailbox/mailbox.h: added two new functions to the api and began implementing them in unixmbox is_updated() => has this mailbox been updated externally? scan() => build info on mailbox, removing old data as needed currently not implemented 1999-11-06 Sean 'Shaleh' Perry * libmailbox/mailbox.c: more work on expunge * libmailbox/mailbox.c: added a tester routine * Makefile.am: added -g 1999-11-06 Sean 'Shaleh' Perry * libmailbox/unixmbox.c: work on expunge use read/write along with lseek still blows up -- getting there * mail/mail.c: check return value of mbox_open() 1999-10-23 Alain Magloire * ChangeLog: Cleanup according to GNU std, and remove of email addresses. The emails should be AUTHORS or THANKS so if they change no need to sed everything. 1999-10-11 Jeff Bailey * libmailbox/Makefile.am: Remove no-install option, add -pedantic 1999-10-12 Sean 'Shaleh' Perry * made sure that the imap4 was REALLY broken 1999-10-11 Jeff Bailey * imap4d/Makefile.am: New file * configure.in: Create imap4d/Makefile, and no install option for library * pop3d/Makefile.am: Add warnings, remove unneeded variable * TODO: Update * impa4rev1/: Rename to imap4d. (I asked first, really I did...) * lib/Makefile.am: Update for new files * lib/getline.c: New File * lib/getline.h: New file 1999-10-11 Sean 'Shaleh' Perry * added my imap code -- PLEASE DO NOT TOUCH 1999-10-10 Jeff Bailey * THANKS: New file * doc/mailutils.texi: New File Provided by Alain Magloire <alainm@rcsm.ece.mcgill.ca> with some changes so that Makeinfo reports no errors. * doc/Makefile.am: New file * configure.in: Deal with libsrc to lib rename * pop3d/Makefile.am: Deal with libsrc to lib rename * Makefile.am: Deal with libsrc to lib rename. Add reference to doc/ subdirectory. * libsrc/: Rename to lib/ 1999-10-09 Sean 'Shaleh' Perry * Made changelog.pl output in approved format -- I miss the time stamp 1999-10-09 Sean 'Shaleh' Perry * added examples/gnu-pop3d.pam 1999-10-08 Jeff Bailey * doc/: New directory * pop3d/Makefile.am: Remove pam detection, now handled by configure in the @AUTHLIBS@ spot. * configure.in: Detect pam correctly/handle crypt case correctly Add option: --disable-pam * acconfig.h: New File 1999-10-08 Sean 'Shaleh' Perry * added showmail.c to examples * libmailbox: some minor code cleanups 1999-10-08 Sean 'Shaleh' Perry * fixed the "if empty mailbox, return not implemented" NB: seems there was a large assumption being made: if unixmbox_open() failed, it was because it was not mbox this was wrong for many reasons, so on actual "not mbox", return EBADMSG. Prolly want to come up with a better error, but this works for now * more cleaning in the mailbox code a) added stat() call -- we can bomb earlier, plus detect if passed object is a directory or file b) unixmbox_close() free()'s mbox. This will hamper the use when we add support for more mailboxes later. Need to find a solution. Perhaps a unixmbox_free() call. There was also a small leak there -- mbox->name was being left. c) To aid checking in unixbox_open(), added checks around fgets call. Now properly detects EOF, errors, etc. This was a large cause of the spurious "not implemented" bug. d) all of unixmbox_open()'s function calls should now be checked NB: need to do the same for rest of file 1999-10-07 Sean 'Shaleh' Perry * removed spurious code in from.c * added TODO file 1999-10-07 Jeff Bailey * Makefile.am: Compile libsrc/ first. * pop3d/Makefile.am: Link properly with crypt and libmailutils.a from libsrc/ * libsrc/Makefile.am: Produce one library for all functions. Do not use libtool for this library, it will never be shared. * configure.in: Remove AM_MAINTAINER_MODE. Export crypt detection to Makefiles 1999-10-07 Sean 'Shaleh' Perry * included my read_a_line() in examples/ 1999-10-06 Sean 'Shaleh' Perry * Cleanup some compilation issues * changed "w+" to "w" in called to pop3_mainloop():ofile = fdopen() why was it called with w+? It is only ever used for writing. * catch EINTR in call to accept() (play nice w/ our UNIX friends) * set SO_REUSEADDR on daemon's socket 1999-10-05 Sean 'Shaleh' Perry * Added changelog.pl so we can have automated entries set CVS_EMAIL=me@here.com and CVS_FULLNAME="Joe Blow" usage: changelog.pl "added signal.c" or changelog.pl, an editor will then appear (uses $VISUAL and $EDITOR) the format is controlled simply via the format call at the end and the section of perl code directly above it 1999-10-05 Sean 'Shaleh' Perry * added pop3d/signal.c -- contains pop3_sigchld() currently 1999-10-05 Sean 'Shaleh' Perry * initial fork() rewrite, not even compiled it yet 1999-10-04 Sean 'Shaleh' Perry * changed lock(int mode) to lock(mailbox_lock_t mode), this will allow the type to be chnaged later without affecting code compatibility * added name to AUTHORS * noticed mention of IMAP4 server and went back to coding it (-: 1999-10-03 Jeff Bailey * mail/mail.c: Support --help, --version. * mail/Makefile.am: Add -Wall to compile line. * libmailbox/Makefile.am: Add -Wall to compile line. * libmailbox/mailbox.c: Warning cleanup, second parameter of lock should be unsigned int, not int. * libmailbox/mailbox.h: "" * libmailbox/unixmbox.h: "" * libmailbox/unixmbox.c: "" * AUTHORS: Include my name. =) * README: Rewrite for public consumption * README-alpha: New file, add mailing list address, CVS information. * libmailbox/unixmbox.c: Include config.h if defined * libmailbox/mailbox.c: Include config.h if defined * mail/mail.c: Include config.h if defined, update copyright. 1999-10-01 Sean 'Shaleh' Perry * added an examples directory and the first example, from.c 1999-10-01 Jakob 'sparky' Kaivo * libmailbox/*.[ch]: added cleanup patches from Shaleh while he works on getting CVS access 1999-09-22 Jakob 'sparky' Kaivo * mail/mail.c (main): added 'f' and 'F' to test mbox_header_line * pop3d/apop.c (pop3_apop): cleanup, partial rewrite for libmailbox * pop3d/retr.c (pop3_retr): fixed a potential segfault * pop3d/user.c (pop3_user): cleanup and use mbox_lock * libmailbox/mailbox.c (mbox_header_line): new function (mbox_body_lines): new function * mail/Makefile.am (mail_DEPENDENCIES): added libmailbox.la * pop3d/top.c (pop3_top): made it work with libmailbox * libmailbox/unixmbox.c (unixmbox_open): added check to see if it's actually an mbox file (unixmbox_open): Set mbox->_lock to unixmbox_lock (unixmbox_lock): new function * libmailbox/unixmbox.h: Added prototype for locking * libmailbox/mailbox.c: Add dummy initializer for locking * libmailbox/mailbox.h: Added interface for locking Added interfaces for mbox_header_line and mbox_body_lines * pop3d/*.[ch]: changed copyright info to FSF * libmailbox/*.[ch]: added copyright/licensing info 1999-09-21 Jakob 'sparky' Kaivo * pop3d/Makefile.am (pop3d_LDADD): add $(AUTHLIBS) * configure.in: Added libsrc/Makefile to AC_OUTPUT (duh, Jake!) fixed the PAM and crypt checks * README: actually put something here, noted necessary tools to build from CVS 1999-09-14 Jakob 'sparky' Kaivo * pop3d/pop3d.c (main): moved setgid() call to after option parsing (main): make --version report PACKAGE and VERSION * libmailbox/mailbox.c (mbox_open): changed paramater type to const * pop3d/Makefile.am (INCLUDES): change relative directories to top_srcdir base * configure.in: Added checks for PAM and crypt 1999-09-13 Jakob 'sparky' Kaivo * pop3d/retr.c (pop3_retr): fixed calls mbox_header => mbox_get_header and mbox_body => mbox_get_body * pop3d/user.c (pop3_user): removed references to mailbox variable * pop3d/stat.c (pop3_stat): fixed mbox->is_deleted => mbox_is_deleted * pop3d/pop3d.c (pop3_mainloop): removed reference to lockfile variable * pop3d/extra.c (pop3_abquit): change fclose(mbox) to mbox_close(mbox) removed calls to free(messages) and pop3_unlock() * pop3d/dele.c (pop3_dele): fixed call to mbox_delete() * Makefile.am (SUBDIRS): added pop3d and libsrc * configure.in: Added checks needed for pop3d/* made it work with libtool * libsrc/*: imported from gnu-pop3d tree * pop3d/*: imported from gnu-pop3d tree 1999-09-11 Jeff Bailey * libmailbox/unixmbox.h: Do not prefix config.h defines with _ 1999-09-10 Jeff Bailey * */*: Accomidate directory rearrange Local Variables: mode: change-log version-control: never End: