summaryrefslogtreecommitdiff
path: root/include/mailutils/sys
AgeCommit message (Collapse)AuthorFiles
2016-11-29Remove compatibility support for obsolete .mu-sizeSergey Poznyakoff1
2016-01-22Update copyright yearsSergey Poznyakoff45
2015-10-27Minor fixes in Makefiles.Sergey Poznyakoff1
* include/mailutils/Makefile.am (errno.h): Use explicit file names instead of implicit variables. * include/mailutils/sys/Makefile.am (debcat.h): Likewise. * libmailutils/diag/Makefile.am (muerrno.c): Likewise. * libmu_argp/Makefile.am (libmu_argp_la_LIBADD): Use relative path to .la,
2015-03-02Update copyright yearsSergey Poznyakoff45
2014-02-26Improve tls supportSergey Poznyakoff1
Remove deprecated types and function calls. Make cipher, mac, and other priorities configurable. * include/mailutils/sys/tls-stream.h (_mu_tls_stream): Use gnutls_session_t. * include/mailutils/tls.h (mu_tls_module_config): New member: priorities. * libmu_auth/tls.c: Remove deprecated types. (intialize_tls_session): Make priorities configurable. (prepare_client_session): Set default priorities. * libmu_cfg/tls.c: New configuration statement: ssl-priorities.
2014-02-06Move biff notification to the library. Implement it in inc and movemail.Sergey Poznyakoff1
* include/mailutils/mailbox.h (mu_mailbox_set_notify) (mu_mailbox_unset_notify): New protos. * include/mailutils/sys/mailbox.h (_mu_mailbox) <notify_user> <notify_fd,notify_sa>: New members. * libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add biffnotify.c * libmailutils/mailbox/biffnotify.c: New file. * libmailutils/mailbox/mailbox.c (_mailbox_create_from_record): Initialize notify_fd. (mu_mailbox_destroy): Free notify_sa. (mu_mailbox_close): Close notify_fd. (mu_mailbox_flush): Rewrite to handle append-only mailboxes effectively. * libmailutils/server/msrv.c (server_cfg_param): Fix docstring. * libmailutils/stream/file_stream.c (fd_open): Open fd read-write if both MU_STREAM_APPEND and MU_STREAM_READ are requested. * libproto/mbox/mbox.c (mbox_expunge0): Rescan the mailbox if messages_count == 0. Special handling for append-only mailboxes. * maidag/deliver.c: Use library notification mechanism. * mh/inc.c: New option --notify. * movemail/movemail.c: Likewise.
2014-02-05Update copyright years.Sergey Poznyakoff45
2013-04-01MH: Synchronize sequences after removal of messages.Sergey Poznyakoff1
* include/mailutils/msgset.h (mu_msgset_sget_mailbox): New proto. * include/mailutils/sys/msgset.h (_MU_MSGSET_MODE): New macro. * libmailutils/msgset/Makefile.am: Add getmbox.c * libmailutils/msgset/getmbox.c: New file. * libmailutils/msgset/addset.c: Use _MU_MSGSET_MODE. * libmailutils/msgset/create.c: Likewise. * libmailutils/msgset/foreachmsg.c: Likewise. * libmailutils/msgset/foreachnum.c: Likewise. * libmailutils/msgset/negate.c: Likewise. * libmailutils/msgset/subset.c: Likewise. * libmailutils/msgset/trans.c: Likewise. * mh/mh.h (mh_private_sequences_iterate): New proto. * mh/mh_sequence.c (format_closure) <delim>: New member. (format_sequence): Use delim to avoid outputting leading space. (save_sequence): Initialize delim. (mh_private_sequences_iterate): New function. * mh/rmm.c (main): Remove message numbers from sequences. * mh/tests/rmm.at: Update.
2013-03-30Implement IMAP SEARCH. New function mu_mailbox_access_time.Sergey Poznyakoff2
* include/mailutils/imap.h (mu_imap_search): New proto. * libproto/imap/search.c: New file. * include/mailutils/sys/imap.h (MU_IMAP_CLIENT_SEARCH_RX): New state. * libproto/imap/fetch.c: Fix debugging categories * libproto/imap/mbox.c (_imap_messages_recent) (_imap_message_unseen): Use search if information is not readily available. * libproto/imap/status.c (_mu_imap_status_name_table): Comment out UNSEEN: its semantics is entirely different from what we need. * libproto/imap/Makefile.am: Add new file. * mu/imap.c: Implement search. * include/mailutils/sys/mailbox.h (_mu_mailbox) <_get_atime>: New method. * include/mailutils/mailbox.h (mu_mailbox_access_time): New proto. * libproto/mbox/mbox.c (_mailbox_mbox_init): Initialize >_get_atime. * libmailutils/mailbox/mailbox.c (mu_mailbox_access_time): New function. * libmailutils/datetime/utcoff.c (mu_utc_offset): Rewrite using tzset. * mh/msgchk.c: Implement --date. Check for new mail using both recent and unseen messages.
2013-01-03Make sure modifications to a message or its parts become visible in the ↵Sergey Poznyakoff2
message stream. * include/mailutils/sys/body.h (_mu_body)<rawstream>: New member. * include/mailutils/sys/message.h (_mu_message)<rawstream>: New member. * libmailutils/mailbox/body.c: Rewrite. Return the specially crafted "body-stream" for user I/O operations. Writes to that stream trigger creation of a temporary stream (write-through mode) which will be used for subsequent I/O. * libmailutils/mailbox/msgbody.c (mu_message_get_body): Use msg->rawstream. * libmailutils/mailbox/msgheader.c (message_header_fill): Do not call mu_message_get_streamref, as that can result in endless recursion. Use msg->rawstream instead. * libmailutils/mailbox/msgref.c (_mu_message_free): Destroy both rawstream and outstream. * libmailutils/mailbox/msgstream.c (mu_message_set_stream): Set rawstream. (mu_message_get_stream): Create outstream as needed. (mu_message_get_streamref): If the message has been modified, create the outstream and return it to the caller. This way, the modifications become visible via the stream interface. * libmailutils/tests/Makefile.am: Add new testcases. * libmailutils/tests/testsuite.at: Likewise. * libmailutils/tests/modmesg.c: New file. * libmailutils/tests/modmesg00.at: New file. * libmailutils/tests/modmesg01.at: New file. * libmailutils/tests/modmesg02.at: New file. * libmailutils/tests/modmesg03.at: New file. * mh/mhn.c: Fix message reference counting.
2012-11-12Implement editheader sieve extension (RFC 5293).Sergey Poznyakoff1
Also fix iterator synchronization after removing an element and improve Sieve API. * include/mailutils/header.h (mu_header_get_itemptr): New proto. * include/mailutils/iterator.h (mu_iterator_advance): Remove. (mu_iterator_delitem): New proto. (mu_iterator_set_delitem): New proto. * include/mailutils/sieve.h (mu_sieve_register_t) <opt_args>: New member. (mu_sieve_register_test_ext) (mu_sieve_register_action_ext): New protos. * include/mailutils/sys/iterator.h (_mu_iterator) <curitem_p>: Remove. <delitem>: New member. All uses updated. * libmailutils/base/iterator.c (mu_iterator_set_delitem): New function. * libmailutils/mailbox/hdritr.c: Implement bidirectional iteration. Implement itrctl method. * libmailutils/mailbox/header.c: Likewise. * libmailutils/base/assoc.c: Use delitem method instead of curitem_p. (mu_iterator_delitem): New function. * libmailutils/base/opool.c * libmailutils/diag/debug.c * libmailutils/list/iterator.c * libmailutils/list/pop.c * libmailutils/list/remove.c * libmailutils/list/removenth.c * libmailutils/mailbox/imapenv.c * libmailutils/mailbox/mbxitr.c * libproto/pop/pop3_iterator.c * libmu_sieve/extensions/Makefile.am: Add editheader.c * libmu_sieve/extensions/editheader.c: New file. * libmu_sieve/prog.c (mu_sv_code_command): Allow for optional positional arguments. * libmu_sieve/register.c (mu_sieve_test_lookup) (mu_sieve_action_lookup): Return NULL if a record with empty (NULL) handler is found. (mu_sieve_register_test_ext) (mu_sieve_register_action_ext): New functions. (mu_sieve_register_test) (mu_sieve_register_action): Rewrite as wrappers to the above. * libmu_sieve/util.c (mu_sieve_vlist_do): Allow for SVT_STRING argument. * sieve/tests/Makefile.am: Add new testcases. * sieve/tests/testsuite.at: Include new testcases. * sieve/tests/addheader.at: New testcase. * sieve/tests/delheader.at: New testcase. * NEWS: Update. * doc/rfc/README: Update.
2012-05-09Fix handling of URL authentication credentials in SMTP AUTH.Sergey Poznyakoff1
Provide special functions for storing and retrieving URL from mu_smtp_t object, instead of using MU_SMTP_PARAM_URL. The major drawback of the latter is that URLs in textual form can contain obfuscated access credentials, which makes them unusable for authentication. * include/mailutils/smtp.h (mu_smtp_set_url) (mu_smtp_get_url) (mu_smtp_set_secret,mu_smtp_get_secret): New protos. * include/mailutils/sys/smtp.h (_mu_smtp) <url>: New member. * libproto/mailer/smtp_secret.c: New file. * libproto/mailer/smtp_url.c: New file. * libproto/mailer/Makefile.am (libmu_mailer_la_SOURCES): Add new files. * libproto/mailer/smtp.c (smtp_open): Use mu_smtp_set_url to preserve URL credentials. * libproto/mailer/smtp_auth.c (_mu_smtp_fixup_params): Use smtp->url. * libproto/mailer/smtp_create.c (mu_smtp_destroy): Destroy smtp->url. * libproto/mailer/smtp_param.c (mu_smtp_set_param): Special handling for MU_SMTP_PARAM_URL. (mu_smtp_get_param): Likewise.
2012-05-09Remove get_stream methods from folder and mailbox.Sergey Poznyakoff1
* doc/texinfo/folder.texi: Update * include/mailutils/cpp/folder.h (Folder) <set_stream> <get_stream>: Remove. * include/mailutils/folder.h (mu_folder_get_stream) (mu_folder_get_streamref) (mu_folder_set_stream): Remove. * include/mailutils/mailbox.h (mu_folder_get_stream) (mu_folder_get_streamref) (mu_folder_set_stream): Remove protos. * include/mailutils/sys/folder.h (_mu_folder)<stream>: Remove. All uses updated. * libmailutils/mailbox/folder.c (mu_folder_set_stream) (mu_folder_get_stream,mu_folder_get_streamref): Remove. * libmailutils/mailbox/mailbox.c (mu_mailbox_get_stream) (mu_mailbox_get_streamref): Remove. * libmu_cpp/folder.cc (get_stream, set_stream): Remove. * libmu_scm/mu_mailbox.c (mu-mailbox-get-port): Remove. * python/libmu_py/folder.c (get_stream): Remove.
2012-04-29Implement a copy method in mailbox.Sergey Poznyakoff2
This method copies given messages (ificated by their sequence or UID numbers) to the given mailbox. So far this is implemented only in IMAP[S] folders. The mh/inc utility uses this method to optionally move incorporated messages to other folder (mailbox) instead of simply deleting them. * include/mailutils/imap.h (mu_imap_response) (mu_imap_response_code): New protos. (MU_IMAP_CB_TAGGED_OK,MU_IMAP_CB_TAGGED_NO) (MU_IMAP_CB_TAGGED_BAD): New callback codes. * include/mailutils/mailbox.h (MU_MAILBOX_COPY_UID) (MU_MAILBOX_COPY_CREAT): New constants. (mu_mailbox_msgset_copy) (mu_mailbox_message_copy): New protos. * include/mailutils/sys/imap.h (resp_code): Rename to response to avoid confusion. All uses updated. (response_code): New member. (_mu_imap_process_tagged_response): New proto. * include/mailutils/sys/mailbox.h (_mu_mailbox) <_copy>: New member. * libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add copy.c * libmailutils/mailbox/copy.c: New file. * libproto/imap/err.c (mu_imap_response): New function. (mu_imap_response_code): New function. * libproto/imap/mbox.c (_imap_copy_to_mailbox) (_mu_imap_mailbox_init): Implement _copy method. * libproto/imap/resplist.c (IS_LBRACE,IS_RBRACE): Fix macros. * libproto/imap/response.c (_mu_imap_response): Call _mu_imap_process_tagged_response to process tagged responses. * libproto/imap/resproc.c (parse_response_code): Bugfix: expected ']' was set off by one. (resptab)<code>: New member. (_mu_imap_process_tagged_response): New function. * mh/inc.c (options, mh_option, opt_handler): New option --moveto. (move_to_mailbox): New variable. (main): If move_to_mailbox is set, move messages to that mailbox instead of deleting them. * mh/mh_getopt.h (mh_arg)<ARG_MOVETO>: New constant. * NEWS: Update. * include/mailutils/folder.h: Add a comment. * libmailutils/mailbox/folder.c: Minor formatting change.
2012-01-05Happy GNU YearSergey Poznyakoff45
2011-12-31Implement SMTPS.Sergey Poznyakoff1
* NEWS: Update. * include/mailutils/registrar.h (mu_smtps_record): New extern. (mu_register_all_mailer_formats): Register mu_smtps_record. * include/mailutils/sys/registrar.h (MU_SMTPS_SCHEME) (MU_SMTPS_SCHEME_LEN,MU_SMTPS_PORT): New defines. * libmailutils/address/address.c (mu_address_get_count): Don't count parts with NULL emails. (mu_address_contains_email): Validate email before comparison. (mu_list_copy): New static. (mu_address_union): Reuse last subaddress if its email is NULL. * libmailutils/base/nullrec.c (mu_smtps_record): New placeholder. * libproto/mailer/smtp.c (mu_smtps_record): New global. (smtp_open): Implement SMTPS * mu/send.c: New file. * mu/Makefile.am (MODULES): Add send.c
2011-12-30Improve msgset interface. Use it in MH.Sergey Poznyakoff1
* libmailutils/msgset/Makefile.am (libmsgset_la_SOURCES): Add new files. * libmailutils/msgset/addset.c: New file. * libmailutils/msgset/count.c: New file. * libmailutils/msgset/foreachmsgno.c: New file. * libmailutils/msgset/foreachuid.c: New file. * libmailutils/msgset/isempty.c: New file. * libmailutils/msgset/subset.c: New file. * libmailutils/msgset/trans.c: New file. * libmailutils/msgset/add.c (mu_msgset_add_range): Take fourth argument specifying the conversion mode. Translate numbers as necessary. * libmailutils/msgset/foreachmsg.c: Translate numbers as necessary. * libmailutils/msgset/foreachnum.c: Rewrite. * libmailutils/msgset/negate.c (_invert_range) (mu_msgset_add_range): Update calls to mu_msgset_add_range. * libmailutils/msgset/parse.c (parse_msgnum_env)<mode>: New member. (parse_msgrange): Update calls to mu_msgset_add_range. (mu_msgset_parse_imap): Change signature. All callers updated. * libmailutils/msgset/sub.c (mu_msgset_sub_range): Take fourth argument specifying the conversion mode. Translate numbers as necessary. * imap4d/copy.c (imap4d_copy0): Update calls to mu_msgset_create and mu_msgset_parse_imap. * imap4d/fetch.c (fetch_thunk): Likewise. * imap4d/search.c (parse_simple_key): Likewise. * imap4d/store.c (store_thunk): Likewise. * include/mailutils/msgset.h (MU_MSGSET_NUM,MU_MSGSET_UID): New defines. (mu_msgset_add,mu_msgset_sub): New protos. (mu_msgset_add_range,mu_msgset_sub_range): Take 4 arguments. All callers changed. * include/mailutils/sys/msgset.h (_mu_msgset_translate_pair) (_mu_msgset_translate_range): New protos. * libmailutils/tests/msgset.c: Reflect the above changes. * testsuite/msgset.c: Likewise. * libproto/imap/mbox.c: Update calls to mu_msgset functions. * mh/mh.h (mh_msgset_t): Remove. (mh_iterator_fp): Remove typedef. (mh_msgset_parse): Change signature. (mh_msgset_member,mh_msgset_reverse,mh_msgset_negate) (mh_msgset_current,mh_msgset_free,mh_msgset_uids): Remove protos. (mh_msgset_parse_string): New proto. (mh_msgset_first_current,mh_msgset_first): New proto. (mh_iterate: Remove proto. Use mu_msgset_foreach* functions instead. (mh_seq_add,mh_seq_delete): Change signatures. * mh/mh_init.c (mh_iterate): Remove. * mh/mh_msgset.c: Rewrite using mu_msgset_t. * mh/mh_sequence.c: Likewise. * mh/anno.c: Use new msgset functions. * mh/burst.c: Likewise. * mh/comp.c: Likewise. * mh/folder.c: Likewise. * mh/forw.c: Likewise. * mh/mark.c: Likewise. * mh/mhn.c: Likewise. * mh/mhpath.c: Likewise. * mh/mhseq.c: Likewise. * mh/pick.c: Likewise. * mh/refile.c: Likewise. * mh/repl.c: Likewise. * mh/rmm.c: Likewise. * mh/scan.c: Likewise. * mh/send.c: Likewise. * mh/sortm.c: Likewise. * mh/whatnowenv.c: Likewise. * mh/tests/mark.at: Reflect changes in the format of the saved sequences, which may contain ranges now. * mu/imap.c: Update calls to mu_msgset functions.
2011-12-26Use mu_msgset_t in imap client for FETCH, STORE and COPY.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_fetch,mu_imap_store) (mu_imap_store_flags,mu_imap_copy): Take mu_msgset_t as the message set parameter. * include/mailutils/imapio.h (mu_imapio_send_msgset): New proto. (mu_imapio_send_command_v,mu_imapio_send_command) (mu_imapio_send_command_e): Take additional mu_msgset_t parameter. All uses changed. * include/mailutils/msgset.h (mu_msgset_parse_imap): Input string is const. * include/mailutils/sys/imap.h (imap_command) <msgset>: New member. * libmailutils/imapio/sendmsgset.c: New file. * libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add sendmsgset.c. * libmailutils/imapio/sendcmd.c (mu_imapio_send_command): Take additional mu_msgset_t parameter. * libmailutils/imapio/sendcmde.c (mu_imapio_send_command_e): Likewise. * libmailutils/imapio/sendcmdv.c (mu_imapio_send_command_v): Likewise. * libmailutils/msgset/parse.c (mu_msgset_parse_imap): Input string is const. * libproto/imap/copy.c (mu_imap_copy): Take mu_msgset_t as the message set parameter. * libproto/imap/fetch.c (mu_imap_fetch): Likewise. * libproto/imap/store.c (mu_imap_store): Likewise. * libproto/imap/storeflg.c (mu_imap_store_flags): Likewise. * libproto/imap/gencom.c (mu_imap_gencom): Send cmd->msgset.
2011-12-26Add functions for operations on message sets.Sergey Poznyakoff2
* configure.ac: Build libmailutils/msgset/Makefile * include/mailutils/msgset.h: New file. * include/mailutils/Makefile.am (pkginclude_HEADERS): Add msgset.h * include/mailutils/mailutils.h: Include mailutils/msgset.h * include/mailutils/sys/msgset.h: New file. * include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add msgset.h * include/mailutils/types.hin (mu_msgset_t): New type. * libmailutils/Makefile.am (SUBDIRS): Add msgset. (libmailutils_la_LIBADD): Add libmsgset.la * libmailutils/msgset/Makefile.am: New file. * libmailutils/msgset/add.c: New file. * libmailutils/msgset/aggr.c: New file. * libmailutils/msgset/clear.c: New file. * libmailutils/msgset/create.c: New file. * libmailutils/msgset/free.c: New file. * libmailutils/msgset/getitr.c: New file. * libmailutils/msgset/getlist.c: New file. * libmailutils/msgset/locate.c: New file. * libmailutils/msgset/parse.c: New file. * libmailutils/msgset/print.c: New file. * libmailutils/msgset/sub.c: New file. * libmailutils/tests/msgset.at: New file. * libmailutils/tests/msgset.c: New file. * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add msgset. (TESTSUITE_AT): Add msgset.at. * libmailutils/tests/testsuite.at: Include msgset.at. * testsuite/msgset.c: New file. * testsuite/Makefile.am (noinst_PROGRAMS): Add msgset.
2011-12-23Finish imap mailbox implementation.Sergey Poznyakoff1
Some features are missing (notably, quick access), but overall the implementation offers all necessary features and performs a lot better than 2.x. Additionally, this commit fixes a minor bug in the imap4d implementation: the STORE command did not accept empty flag list. * NEWS: Update. * imap4d/store.c (store_thunk): Accept empty list as "items" argument. * include/mailutils/imap.h (mu_imap_store_flags): New proto. * include/mailutils/imaputil.h (mu_imap_format_flags): Add new argument. * include/mailutils/sys/imap.h (_MU_IMAP_MSG_ATTRCHG): New flag. * libmailutils/imapio/flags.c: Accept three arguments, last one being a boolean flag specifying whether we want \Recent in the output. * libproto/imap/storeflg.c: New flag. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add storeflg.c. * libproto/imap/mbox.c: Finish the basic implementation. * imap4d/sync.c: Update calls to mu_imap_format_flags. * imap4d/util.c: Likewise. * mu/imap.c: Likewise. * libmailutils/imapio/sendflg.c (mu_imapio_send_flags): Likewise.
2011-12-23Implement imap mailbox (read-only, so far).Sergey Poznyakoff1
* include/mailutils/sys/imap.h (_mu_imap_mailbox_init): New proto. (_mu_imap_message,_mu_imap_mailbox): New structures. * libproto/imap/mbox.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Put back mbox.c * libproto/imap/fetch.c: Fix body/bodystructure parsing. * libproto/imap/folder.c (_mu_imap_folder_destroy): Close folder. (_mu_imap_folder_open): Implement STARTTLS. (_imap_record): Accept parameters in URL, use _mu_imap_mailbox_init to initialize mailbox.
2011-12-22Implement imap (client) bodystructure and envelope.Sergey Poznyakoff1
* libmailutils/string/wordsplit.c (alloc_space): Fix reallocation calculations. * imap4d/fetch.c (bodystructure): Output number of lines for any TEXT part, not only TEXT/PLAIN. * include/mailutils/header.h (MU_HEADER_CONTENT_LOCATION): New define. * include/mailutils/imap.h (mu_imap_fetch_bodystructure): Implement. (mu_imap_fetch_envelope): Replace data fields with a single pointer to struct mu_imapenvelope. * include/mailutils/message.h: Include datetime.h (mu_imapenvelope, mu_bodystructure): New structs. (mu_message_type): New type. (mu_message_get_imapenvelope,mu_message_imapenvelope_free) (mu_message_set_imapenvelope) (mu_bodystructure_free,mu_list_free_bodystructure) (mu_message_get_bodystructure) (mu_message_set_bodystructure): New protos. * include/mailutils/mime.h (mu_mime_param_assoc_create) (mu_mime_param_assoc_add): New protos. * include/mailutils/sys/message.h (_mu_message)<_imapenvelope> <_bodystructure>: New methods. * libmailutils/mailbox/bodystruct.c: New file. * libmailutils/mailbox/imapenv.c: New file. * libmailutils/mailbox/Makefile.am (libmailbox_la_SOURCES): Add new sources. * libproto/imap/fetch.c: Implement bodystructure. * mu/imap.c: Likewise. * testsuite/bs.c: New file. * testsuite/Makefile.am (noinst_PROGRAMS): Add bs.
2011-12-15imap client: implement folder API.Sergey Poznyakoff1
* libmailutils/list/listlist.c (mu_list_append_list): Do nothing if the source list is empty. * include/mailutils/sys/imap.h (_mu_imap_url_init) (_mu_imaps_url_init): New protos. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Restore url.c * libproto/imap/mbox.c: Deleted * libproto/imap/url.c: Rewrite. * libproto/imap/folder.c: Rewrite from scratch. * configure.ac: Build libproto/imap/tests/Makefile * include/mailutils/imap.h (mu_imap_session_state) (mu_imap_iserror, mu_imap_clearerr) (mu_imap_login_secret): New protos. * include/mailutils/sys/imap.h (_mu_imap_list_element_is_nil): New proto. * libmailutils/mailbox/folder.c (mu_folder_list): Pass MU_FOLDER_ATTRIBUTE_ALL. * libproto/imap/fake-folder.c: Remove. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Remove fake-folder.c Add url.c and folder.c * libproto/imap/create.c (mu_imap_session_state) (mu_imap_iserror, mu_imap_clearerr): New functions. * libproto/imap/delete.c: Check input parameters. * libproto/imap/fetch.c: Use _mu_imap_list_element_is_nil to check for empty lists. * libproto/imap/genlist.c: Likewise. * libproto/imap/rename.c: Likewise. * libproto/imap/subscribe.c: Likewise. * libproto/imap/unsubscribe.c: Likewise. * libproto/imap/resplist.c: Treat NIL and () equally. * libproto/imap/login.c (mu_imap_login_secret): New function. * mu/imap.c: Fix a typo.
2011-12-14Imap client: implement starttls.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_starttls): New proto. * include/mailutils/imapio.h: Use mu_imapio_t instead of struct _mu_imapio *. * include/mailutils/sys/imap.h (MU_IMAP_CLIENT_STARTTLS_RX): New state. * libmailutils/imapio/transport.c: New file. * libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add transport.c * libproto/imap/starttls.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add starttls.c. * libproto/imap/capability.c (mu_imap_capability): Bugfix: set up comparator and reclaim function after successful return from mu_list_map. * libproto/imap/capatst.c (mu_imap_capability_test): Clear MU_IMAP_RESP bit. * libproto/imap/err.c (mu_imap_strerror): Return errstr only if MU_IMAP_RESP is set. * mu/imap.c: Implement starttls.
2011-12-14Imap client: implement LSUB.Sergey Poznyakoff1
LSUB is pretty similar to LIST, therefore it is implemented as a wrapper over the latter. * include/mailutils/imap.h (mu_imap_genlist,mu_imap_genlist_new) (mu_imap_lsub,mu_imap_lsub_new): New protos. * include/mailutils/sys/imap.h (MU_IMAP_CLIENT_LSUB_RX): New state. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add new files. * libproto/imap/genlist.c: New file. * libproto/imap/list.c: Rewrite using generalized list functions. * libproto/imap/lsub.c: New file. * mu/imap.c: Implement lsub.
2011-12-14Imap client: Implement SUBSCRIBE and UNSUBSCRIBE.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_subscribe) (mu_imap_unsubscribe): New protos. * include/mailutils/sys/imap.h (MU_IMAP_CLIENT_SUBSCRIBE_RX) (MU_IMAP_CLIENT_UNSUBSCRIBE_RX): New states. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add subscribe.c and unsubscribe.c * libproto/imap/subscribe.c: New file. * libproto/imap/unsubscribe.c: New file. * mu/imap.c: Implement subscribe/unsubscribe.
2011-12-14Imap client: quote command arguments as necessary.Sergey Poznyakoff1
* include/mailutils/imapio.h (mu_imapio_send_command) (mu_imapio_send_command_e,mu_imapio_send_command_v) (mu_imapio_last_error,mu_imapio_clearerr): New protos. * include/mailutils/sys/imap.h (imap_command)<uid>: Remove. <extra>: New member. * libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add new files. * libmailutils/imapio/qstring.c (mu_imapio_send_qstring_unfold): Improve functionality. * libmailutils/imapio/sendcmd.c: New file. * libmailutils/imapio/sendcmde.c: New file. * libmailutils/imapio/sendcmdv.c: New file. * libmailutils/imapio/errstate.c: New file. * libproto/imap/gencom.c (mu_imap_gencom): Use mu_imapio_send_command_v * libproto/imap/appstrsiz.c: Quote command arguments as necessary. * libproto/imap/capability.c: Likewise. * libproto/imap/check.c: Likewise. * libproto/imap/close.c: Likewise. * libproto/imap/copy.c: Likewise. * libproto/imap/delete.c: Likewise. * libproto/imap/expunge.c: Likewise. * libproto/imap/fetch.c: Likewise. * libproto/imap/list.c: Likewise. * libproto/imap/login.c: Likewise. * libproto/imap/mbcreate.c: Likewise. * libproto/imap/noop.c: Likewise. * libproto/imap/rename.c: Likewise. * libproto/imap/select.c: Likewise. * libproto/imap/store.c: Likewise. * libproto/imap/unselect.c: Likewise.
2011-12-13Imap client: implement list.Sergey Poznyakoff1
* libmailutils/stdstream/basestr.c (mu_strout): Bugfix: initialize destroy function. * include/mailutils/imap.h (imap_command) (mu_imap_gencom): Move to sys/imap.h (mu_imap_list,mu_imap_list_new): New protos. * include/mailutils/sys/imap.h (imap_command): New struct (from ../imap.h). <handler>: Rename to tagged_handler. (untagged_handler,untagged_handler_data): New members. All uses changed. (mu_imap_gencom): New proto. * libproto/imap/list.c: New file. * libproto/imap/Makefile.am: Add list.c * libproto/imap/gencom.c: Use supplied untagged_handler to analize untagged response. * mu/imap.c: Implement list command.
2011-12-12Initialize standard I/O streams statically.Sergey Poznyakoff3
This allows programmers to use them right away, much like their stdio counterparts. The mu_stdstream_setup and friends can be used to re-initialize them, should the need be. * include/mailutils/sys/file_stream.h (_MU_FILE_STREAM_STATIC_FILENAME): New flag. (_mu_file_stream_setup): New proto. * include/mailutils/sys/logstream.h (_mu_log_stream_setup): New proto. * include/mailutils/sys/stream.h (_MU_STR_EVENT_BOOTSTRAP): New event code. (_mu_stream) <destroy>: New method. * libmailutils/stdstream/basestr.c: Define the three standard streams statically, use bootstrap event to initialize them. * libmailutils/stdstream/strerr.c (mu_stdstream_strerr_create): Accept tag==NULL. * libmailutils/stream/file_stream.c (fd_done): Do not free filename if _MU_FILE_STREAM_STATIC_FILENAME is set. (_mu_file_stream_setup): New function. * libmailutils/stream/logstream.c (NEXT): Check size before advancing buffer pointer. (_mu_log_stream_setup): New function. * libmailutils/stream/stream.c (_bootstrap_event): New macro. (mu_stream_destroy): If .destroy is defined, use it instead of free(2). (mu_stream_open,mu_stream_seek,mu_stream_set_buffer) (mu_stream_read,mu_stream_readdelim,mu_stream_getdelim) (mu_stream_write,mu_stream_size,mu_stream_wait) (mu_stream_truncate,mu_stream_shutdown): Call _bootstrap_event at the beginning. * libmailutils/tests/.gitignore: Add strin, strout. * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add strin, strout. (TESTSUITE_AT): Add stdstream tests. * libmailutils/tests/testsuite.at: Include stdstream tests. * libmailutils/tests/strerr.at: New test case. * libmailutils/tests/strin.at: Likewise. * libmailutils/tests/strout.at: Likewise. * libmailutils/tests/strin.c: New test program. * libmailutils/tests/strout.c: Likewise.
2011-12-08imap client: implement CREATE and APPEND. Fix APPEND in imap4d.Sergey Poznyakoff2
* imap4d/append.c (imap4d_append0): Use mu_message_from_stream_with_envelope with crafted envelope. The effect is that the envelope of the message always reflects the actual sender, as deduced from the header (X-Envelope-Sender, Sender, From, in that order) and the date given with the APPEND command (or current date/time, if not given). * imap4d/tests/append00.at: Reflect changes in the envelope. * imap4d/tests/append01.at: Likewise. * imap4d/io.c (io_format_completion_response): Call imap4d_sync to emit eventual non-tagged responses before the tagged one. * include/mailutils/envelope.h (mu_envelope_set_destroy): New proto. * include/mailutils/header.h (MU_HEADER_SENDER): Remove duplicate define. * include/mailutils/imap.h (mu_imap_mailbox_create) (mu_imap_append_stream_size,mu_imap_append_stream) (mu_imap_append_message,mu_imapio_send_flags) (mu_imapio_send_time): New protos. * include/mailutils/imapio.h (mu_imapio_send_literal): Remove proto. (mu_imapio_send_literal_string) (mu_imapio_send_literal_stream): New protos. * include/mailutils/message.h (mu_message_from_stream_with_envelope): New proto. * include/mailutils/sys/imap.h (MU_IMAP_CLIENT_APPEND_RX): New state. * include/mailutils/sys/message_stream.h (_mu_message_stream) <envelope>: Rename to envelope_string. <construct_envelope>: New member. * libmailutils/imapio/literal.c: Remove. * libmailutils/imapio/litstream.c: New file. * libmailutils/imapio/litstring.c: New file. * libmailutils/imapio/time.c: New file. * libmailutils/imapio/Makefile.am: Add new files. * libmailutils/imapio/flags.c (mu_imapio_send_flags): New function. * libmailutils/imapio/qstring.c (mu_imapio_send_qstring_unfold): Use mu_imapio_send_literal_string. * libmailutils/mailbox/envelope.c (mu_envelope_set_destroy): New function. * libmailutils/stream/message_stream.c (mu_message_from_stream_with_envelope): New function. (mu_stream_to_message): Rewrite as an alternative entry point to the above. * libproto/imap/Makefile.am: Add new files. * libproto/imap/appmsg.c: New file. * libproto/imap/appstr.c: New file. * libproto/imap/appstrsiz.c: New file. * libproto/imap/mbcreate.c: New file. * mu/imap.c: Implement create and append.
2011-12-07imap client: implement STORE, DELETE, RENAME, CHECK, EXPUNGE, COPY, CLOSE ↵Sergey Poznyakoff1
and UNSELECT. * include/mailutils/imap.h (imap_command): New struct. (mu_imap_gencom): New function. (mu_imap_store,mu_imap_delete) (mu_imap_rename,mu_imap_mailbox_close,mu_imap_close) (mu_imap_check): New functions. (_mu_close_handler): New function. * include/mailutils/sys/imap.h (mu_imap_client_state): Add new states. * libproto/imap/gencom.c: New file. * libproto/imap/close.c: New file. * libproto/imap/delete.c: New file. * libproto/imap/rename.c: New file. * libproto/imap/store.c: New file. * libproto/imap/unselect.c: New file. * libproto/imap/check.c: New file. * libproto/imap/expunge.c: New file. * libproto/imap/copy.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add new files. * mu/imap.c: Implement new commands. * mu/shell.c (execute_line): Treat backslash as escape only before another backslash or double-quote.
2011-11-30Clean-up state changes in imap client. Fix error handling in it and in pop3.Sergey Poznyakoff2
* include/mailutils/imap.h (mu_imap_state): Rename to struct mu_imap_session_state, prefix all values with MU_IMAP_STATE_. All uses updated. * include/mailutils/sys/imap.h (mu_imap_client_state): Prefix all values with MU_IMAP_CLIENT. Rename MU_IMAP_NO_STATE to MU_IMAP_READY. All uses updated. (_mu_imap)<state>: Rename to client_state, fix data type. (imap_state): Rename to imap_state. All uses updated. (MU_IMAP_CHECK_EAGAIN): Reset state to MU_IMAP_CLIENT_READY if MU_ERR_REPLY or MU_ERR_BADREPLY is reported. * include/mailutils/sys/pop3.h (MU_POP3_CHECK_EAGAIN): Reset state to MU_POP3_NO_STATE, if MU_ERR_REPLY or MU_ERR_BADREPLY is reported. * libproto/imap/fetch.c (_date_mapper): Avoid overwriting resp->type. * libproto/imap/select.c (_mu_imap_collect_flags): Initialize *res prior to collecting flags into it. * mu/imap.c: Install a FETCH callback.
2011-11-30imap client: initial implementation of fetch.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_fetch): New proto. (MU_IMAP_CB_FETCH): New callback code. (MU_IMAP_FETCH_BODY,MU_IMAP_FETCH_BODYSTRUCTURE) (MU_IMAP_FETCH_ENVELOPE,MU_IMAP_FETCH_FLAGS) (MU_IMAP_FETCH_INTERNALDATE,MU_IMAP_FETCH_RFC822_SIZE) (MU_IMAP_FETCH_UID): New constants. (mu_imap_fetch_body,mu_imap_fetch_bodystructure) (mu_imap_fetch_envelope,mu_imap_fetch_flags) (mu_imap_fetch_internaldate,mu_imap_fetch_rfc822_size) (mu_imap_fetch_uid,mu_imap_fetch_response): New structures. * include/mailutils/sys/imap.h (MU_IMAP_SET_XSCRIPT_MASK) (MU_IMAP_CLR_XSCRIPT_MASK): New macros. (mu_imap_client_state)<MU_IMAP_FETCH_RX>: New state. (_mu_imap_list_nth_element_is_string): New proto. * libproto/imap/fetch.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add fetch.c * libproto/imap/carrier.c (mu_imap_set_carrier): Update call to mu_imapio_create. * libproto/imap/resplist.c (_mu_imap_list_nth_element_is_string): New function. * libproto/imap/resproc.c (_process_unsolicited_response): Handle FETCH response. * libproto/imap/trace.c (mu_imap_trace_mask): Call mu_imapio_trace_payload if needed. * mu/imap.c (imap_bad_callback): New function. (com_disconnect): Register imap_bad_callback. (com_fetch): New function. (imap_comtab): Add the "fetch" command. * mu/mu.h (mutool_command) <flags>: New member. * mu/pop.c (pop_comtab): Update initializers. * mu/shell.c (default_comtab): Update initializers. (execute_line): Rewrite using incremental wordsplit. This allows for optionally coalescing arguments with indices >= argmax into one argument. This is useful for such commands as "prompt" and "fetch".
2011-11-30imapio: fix payload tracing and handling of continuation responsesSergey Poznyakoff1
* include/mailutils/imapio.h (mu_imapio_create): Change signature. All uses updated. (mu_imapio_trace_payload,mu_imapio_get_trace_payload): New protos. * include/mailutils/sys/imapio.h (_mu_imapio) <_imap_server> <_imap_trace_payload>: New bits. * libmailutils/imapio/create.c (mu_imapio_create): Take three arguments, the third one specifying whether the imapio object is intended for server or client. * libmailutils/imapio/getline.c (initial_parse): In server mode, parse everything at once. Handle continuation responses in client mode. (mu_imapio_getline): Toggle MU_XSCRIPT_PAYLOAD only if requested. * libmailutils/imapio/literal.c: Wait for continuation response (in client mode). * libmailutils/imapio/trace.c (mu_imapio_trace_payload) (mu_imapio_get_trace_payload): New functions. * libmailutils/tests/imapio.c: New option -server. * libmailutils/tests/imapio.at: Update literal tests.
2011-11-25imap client: implement noop.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_noop): New proto. * include/mailutils/sys/imap.h (mu_imap_client_state) <MU_IMAP_NOOP_RX>: New state. * libproto/imap/noop.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add noop.c * mu/imap.c (report_failure): New function. (com_login,select_mbox,com_status): Use report_failure for error reporting. (com_noop): New function. (imap_comtab)<noop>: New command.
2011-11-25Process untagged responses synchronously.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_response_action_t): Move to sys/imap.h (mu_imap_foreach_response): Remove. * include/mailutils/sys/imap.h (_mu_imap)<untagged_resp>: Remove. All sources updated. (_mu_imap_response): Change sigature. (_mu_imap_untagged_response_clear) (_mu_imap_untagged_response_add): Remove. (_mu_imap_untagged_response_to_list) (_mu_imap_process_untagged_response): New protos. * libproto/imap/connect.c: Use _mu_imap_untagged_response_to_list and _mu_imap_process_untagged_response. * libproto/imap/create.c: Update. * libproto/imap/destroy.c: Update. * libproto/imap/disconnect.c: Update. * libproto/imap/capability.c: Update calls to _mu_imap_response * libproto/imap/id.c: Likewise. * libproto/imap/login.c: Likewise. * libproto/imap/logout.c: Likewise. * libproto/imap/select.c: Likewise. * libproto/imap/status.c: Likewise. * libproto/imap/resplist.c (_mu_imap_untagged_response_clear): Remove. (_mu_imap_untagged_response_add): Remove. (_mu_imap_untagged_response_to_list): New function. * libproto/imap/response.c (_mu_imap_response): Take response-processing function and its closure as arguments. * libproto/imap/resproc.c (_mu_imap_process_untagged_response): New function. (mu_imap_foreach_response): Remove. * mu/imap.c: Install a BYE callback.
2011-11-24Change callback handling in imap client.Sergey Poznyakoff1
* include/mailutils/imap.h (MU_IMAP_CB_NO) (MU_IMAP_CB_BAD,MU_IMAP_CB_BYE) (MU_IMAP_CB_PREAUTH): New callbacks. (mu_imap_callback_t): Change signature. (mu_imap_callback): Change signature. * include/mailutils/sys/imap.h (mu_imap_client_state) <MU_IMAP_CLOSING>: New state. * libproto/imap/callback.c (mu_imap_callback): Change signature. Fix boundary check. (mu_imap_register_callback_function): Fix boundary check. * libproto/imap/connect.c (mu_imap_connect): Use mu_imap_foreach_response to parse response. * libproto/imap/response.c (_mu_imap_response): Check number of words before dereferencing them. * libproto/imap/resproc.c: Handle all server responses. * mu/imap.c (com_connect): Set POPAUTH callback. Set verbosity flags after I/O structure has been created.
2011-11-24imap client: reflect changes to imapio parser.Sergey Poznyakoff1
* include/mailutils/sys/imap.h (_mu_imap_seterrstrz): New proto. * libmailutils/imapio/replstr.c: Update. * libproto/imap/err.c (_mu_imap_seterrstrz): New function. * libproto/imap/id.c: Remove superfluous calls to _mu_imap_seterrstr. * libproto/imap/login.c: Likewise. * libproto/imap/select.c: Likewise. * libproto/imap/status.c: Likewise. * libproto/imap/response.c: Set human-readable text as errstr. * libproto/imap/resproc.c (ok_response): Reflect changes to mu_imapio_getline.
2011-11-19Implement general-purpose processing of unsolicited responses in imap client.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_response_action_t): New typedef. (mu_imap_foreach_response): New proto. (MU_IMAP_CB_PERMANENT_FLAGS,MU_IMAP_CB_MESSAGE_COUNT) (MU_IMAP_CB_RECENT_COUNT,MU_IMAP_CB_FIRST_UNSEEN) (MU_IMAP_CB_UIDNEXT,MU_IMAP_CB_UIDVALIDITY) (MU_IMAP_CB_OK,_MU_IMAP_CB_MAX): New constants. (mu_imap_callback_t): New typedef. (mu_imap_callback,mu_imap_register_callback_function): New protos. (MU_IMAP_RESPONSE_ALERT,MU_IMAP_RESPONSE_BADCHARSET) (MU_IMAP_RESPONSE_CAPABILITY,MU_IMAP_RESPONSE_PARSE) (MU_IMAP_RESPONSE_PERMANENTFLAGS,MU_IMAP_RESPONSE_READ_ONLY) (MU_IMAP_RESPONSE_READ_WRITE,MU_IMAP_RESPONSE_TRYCREATE) (MU_IMAP_RESPONSE_UIDNEXT,MU_IMAP_RESPONSE_UIDVALIDITY) (MU_IMAP_RESPONSE_UNSEEN): New constants. (mu_imap_response_codes): New extern. * include/mailutils/sys/imap.h (_mu_imap) <callback>: New member. (_mu_imap_collect_flags, _mu_imap_list_at): New protos. * libproto/imap/resplist.c (_mu_imap_list_at): New function. * libproto/imap/callback.c: New file. * libproto/imap/resproc.c: New file. * libproto/imap/Makefile.am: Add new files. * libproto/imap/capability.c: Rewrite using mu_imap_foreach_response. * libproto/imap/id.c: Likewise. * libproto/imap/select.c: Likewise.
2011-11-19imap client: implement status commandSergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_status): New proto. (_mu_imap_status_name_table): New declaration. * include/mailutils/sys/imap.h (mu_imap_client_state) <MU_IMAP_STATUS_RX>: New state. * libproto/imap/status.c: New file. * libproto/imap/Makefile.am (libmu_imap_la_SOURCES): Add status.c * mu/imap.c: Implement "status"
2011-11-18imap client: implement select/examine.Sergey Poznyakoff1
* include/mailutils/imap.h (mu_imap_stat): New structs. (MU_IMAP_STAT_DEFINED_FLAGS,MU_IMAP_STAT_PERMANENT_FLAGS) (MU_IMAP_STAT_MESSAGE_COUNT,MU_IMAP_STAT_RECENT_COUNT) (MU_IMAP_STAT_FIRST_UNSEEN,MU_IMAP_STAT_UIDNEXT) (MU_IMAP_STAT_UIDVALIDITY): New flags. (mu_imap_select): New proto. * include/mailutils/imapio.h (mu_imap_flag_to_attribute) (mu_imap_format_flags): New protos. * include/mailutils/sys/imap.h (mu_imap_client_state) <MU_IMAP_SELECT_RX>: New state. (_mu_imap) <mbox_name,mbox_writable,mbox_stat>: New members. * libmailutils/imapio/flags.c: New file. * libmailutils/imapio/Makefile.am: Add flags.c * libproto/imap/select.c: New file. * libproto/imap/Makefile.am: Add select.c * libproto/imap/err.c (_mu_imap_seterrstr) (_mu_imap_clrerrstr, mu_imap_strerror): Allow for imap==NULL. * libproto/imap/id.c (mu_imap_id): Set errstr on MU_ERR_BADREPLY * libproto/imap/login.c (mu_imap_login): Likewise. * libproto/imap/resplist.c (_mu_imap_list_element_is_string): New function. * mu/imap.c: Implement examine and select.
2011-11-18Move list support into a separate convenience library.Sergey Poznyakoff1
* configure.ac: Build libmailutils/list/Makefile * include/mailutils/sys/list.h (DESTROY_ITEM): New define. (_mu_list_insert_item): New proto. * libmailutils/Makefile.am (SUBDIRS): Add list. (libmailutils_la_LIBADD): Add list/liblist.la * libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove list sources. * libmailutils/base/list.c: Split into smaller files (see below). * libmailutils/base/listlist.c: Move to libmailutils/list/listlist.c * libmailutils/list/Makefile.am: New file. * libmailutils/list/append.c: New file. * libmailutils/list/array.c: New file. * libmailutils/list/clear.c: New file. * libmailutils/list/count.c: New file. * libmailutils/list/create.c: New file. * libmailutils/list/destroy.c: New file. * libmailutils/list/do.c: New file. * libmailutils/list/empty.c: New file. * libmailutils/list/get.c: New file. * libmailutils/list/getcomp.c: New file. * libmailutils/list/insert.c: New file. * libmailutils/list/intersect.c: New file. * libmailutils/list/iterator.c: New file. * libmailutils/list/locate.c: New file. * libmailutils/list/prepend.c: New file. * libmailutils/list/remove.c: New file. * libmailutils/list/replace.c: New file. * libmailutils/list/setcomp.c: New file. * libmailutils/list/setdestr.c: New file.
2011-11-18Rewrite existing imap client support using imapio.Sergey Poznyakoff1
2011-11-17Implement IMAP I/O functions for client and server.Sergey Poznyakoff2
* include/mailutils/imapio.h: New file. * include/mailutils/sys/imapio.h: New file. * libmailutils/imapio/create.c: New file. * libmailutils/imapio/getline.c: New file. * libmailutils/imapio/literal.c: New file. * libmailutils/imapio/printf.c: New file. * libmailutils/imapio/qstring.c: New file. * libmailutils/imapio/send.c: New file. * libmailutils/imapio/trace.c: New file. * libmailutils/imapio/words.c: New file. * libmailutils/imapio/xscript.c: New file. * configure.ac: Build libmailutils/imapio/Makefile * include/mailutils/Makefile.am (pkginclude_HEADERS): Add imapio.h. * include/mailutils/imapio.h: New file. * include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add imapio.h. * include/mailutils/sys/imapio.h: New file. * include/mailutils/types.hin (mu_imapio_t): New data type. * libmailutils/Makefile.am (SUBDIRS): Add imapio. * libmailutils/tests/Makefile.am: Build imapio * libmailutils/tests/imapio.c: New source. * libmailutils/tests/wsp.c: Handle escape argument
2011-11-04Implement error_string method in TLS streams.Sergey Poznyakoff1
* include/mailutils/sys/tls-stream.h (_mu_tls_stream_s): Remove. * libmailutils/diag/errors (MU_ERR_BAD_RESUMPTION): Remove. Use EAGAIN instead. (MU_ERR_DISABLED): New error code. * libmu_auth/tls.c (_tls_server_open): Return MU_ERR_DISABLED when needed. (_mu_tls_stream_create): Implement error_string method. * libproto/maildir/mbox.c (maildir_msg_init): Fix return value.
2011-10-25Reimplement DBM support.Sergey Poznyakoff2
* lib/mu_dbm.c: Remove. * lib/mu_dbm.h: Remove. * lib/Makefile.am: Remove mu_dbm.[ch]. * include/mailutils/sys/dbm.h: New file. * include/mailutils/sys/Makefile.am: Add dbm.h * include/mailutils/dbm.h: New file. * include/mailutils/Makefile.am (pkginclude_HEADERS): Add dbm.h. * include/mailutils/types.hin (mu_dbm_file_t): New data type. * libmu_dbm/Makefile.am: New file. * libmu_dbm/berkeley.c: New file. * libmu_dbm/close.c: New file. * libmu_dbm/create.c: New file. * libmu_dbm/datumfree.c: New file. * libmu_dbm/dbm.c: New file. * libmu_dbm/delete.c: New file. * libmu_dbm/destroy.c: New file. * libmu_dbm/errstr.c: New file. * libmu_dbm/fetch.c: New file. * libmu_dbm/firstkey.c: New file. * libmu_dbm/gdbm.c: New file. * libmu_dbm/mudbm.h: New file. * libmu_dbm/ndbm.c: New file. * libmu_dbm/nextkey.c: New file. * libmu_dbm/open.c: New file. * libmu_dbm/safety.c: New file. * libmu_dbm/store.c: New file. * Makefile.am [MU_COND_DBM]: Define LIBMU_DBM_DIR (SUBDIRS): Add $(LIBMU_DBM_DIR) * configure.ac: Revamp DBM support: several database types can be specified at once. (AC_CONFIG_FILES): Build libmu_dbm/Makefile * libmu_sieve/extensions/vacation.c: Remove inclusion of mu_dbm.h. * maidag/Makefile.am (maidag_LDADD): Add DBM libraries. * maidag/maidag.c: ENABLE_DBM instead of USE_DBM * maidag/maidag.h: Include <mailutils/dbm.h> instead of mu_dbm.h. * maidag/mailquota.c (dbm_retrieve_quota): Rewrite using libmu_dbm library calls. * mu/Makefile.am [MU_COND_DBM]: Define DBM_C. (MODULES): Add $(DBM_C). (AM_CPPFLAGS): Define DBMLIBS. * mu/ldflags.c (NEEDAUTH): Change definition. (lib_descr) <weight>: New member. All uses changed. (add_entry): Null arguments ignored. (mutool_ldflags): Rewrite traversal of lib_descr. * mu/dbm.c: New file. * pop3d/Makefile.am (pop3d_LDADD, popauth_LDADD): Add DBM libraries. * pop3d/apop.c: Rewrite using libmu_dbm library calls. * pop3d/bulletin.c: Likewise. * pop3d/logindelay.c: Likewise. * pop3d/pop3d.c: Change USE_DBM to ENABLE_DBM. * pop3d/pop3d.h: Include mailutils/dbm.h instead of mu_dbm.h * pop3d/popauth.c: Rewrite using libmu_dbm library calls. * include/mailutils/cctype.h (MU_CTYPE_ENDLN): New character class. (mu_isendln): New macro. * libmailutils/string/muctype.c (mu_c_tab): Mark \r and \n as MU_CTYPE_ENDLN.
2011-10-20