- 12 Dec, 2011 3 commits
-
-
-
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.
Sergey Poznyakoff authored
-
- 11 Dec, 2011 2 commits
-
-
* libproto/mbox/mboxscan.c (mbox_scan_internal): Fix UID generation. * testsuite/lstuid.c: New test program. * testsuite/lstuid00.at: New test case. * testsuite/lstuid01.at: Likewise. * testsuite/lstuid02.at: Likewise. * testsuite/Makefile.am: Add new test cases. * testsuite/testsuite.at: Likewise.
Sergey Poznyakoff authored -
* libmu_sieve/sieve.y (mu_sieve_machine_init_ex): Fix typo. Reference errstream, not mu_strerr.
Sergey Poznyakoff authored
-
- 10 Dec, 2011 2 commits
-
-
* imap4d/imap4d.h (util_format_attribute_flags) (util_attribute_to_type): Remove. All uses changed to mu_imap_format_flags and mu_imap_flag_to_attribute, respectively. (util_type_to_attribute): Remove.
Sergey Poznyakoff authored -
The new parser complies to RFC3501. Its output message sets are formatted as MU lists of non-overlapping contiguous message ranges, which reduces memory consumption and imposes less strain on CPU. The parser automatically translates message UIDs to sequence numbers and provides better error handling. * imap4d/imap4d.h (util_msgset): Remove. (util_parse_msgset): New proto. (imap4d_message_action_t): New typedef. (util_foreach_message): New proto. * imap4d/util.c (util_msgset): Remove. (util_parse_msgset): New function. * imap4d/copy.c: Use util_parse_msgset to parse message set specs and util_foreach_message to iterate over the returned list. * imap4d/fetch.c: Likewise. * imap4d/search.c: Likewise. * imap4d/store.c: Likewise. * imap4d/tests/IDEF0955.at: Update the test. * include/mailutils/list.h (mu_list_action_t): Fix typedef. * libmailutils/list/foreach.c (mu_list_foreach) (mu_list_do): Update signatures.
Sergey Poznyakoff authored
-
- 09 Dec, 2011 2 commits
-
-
…umber is not found in the mailbox. * libmailutils/base/amd.c (amd_get_message): Return MU_ERR_NOENT if msgno is not found in the mailbox, but not if it is 0, in which case return EINVAL. * libproto/mbox/mbox.c (mbox_get_message): Likewise. * libproto/pop/mbox.c (pop_create_pop3_message): Likewise. * libproto/mbox/mboxscan.c (mbox_scan_internal): Fix calculation of UIDs.
Sergey Poznyakoff authored
-
- 08 Dec, 2011 7 commits
-
-
* examples/mta.c (make_tmp): Use gmtime + mu_c_streamftime to create From_ line. * libmailutils/mailbox/msgenv.c (message_envelope_date): Use gmtime. * maidag/deliver.c (make_tmp): Likewise. * maidag/lmtp.c (cfun_data): Likewise. * readmsg/readmsg.c (print_unix_header): Use gmtime.
Sergey Poznyakoff authored -
The function initializes mu_timezone structure to the local timezone. * include/mailutils/datetime.h (mu_utc_offset): Change return type. (mu_datetime_tz_local): New proto. * libmailutils/datetime/tzlocal.c: New file. * libmailutils/datetime/Makefile.am: Add new file. * libmailutils/datetime/scantime.c (mu_scan_datetime): Use mu_datetime_tz_local to initialize local TZ. * mh/mh_format.c (_parse_date): Likewise. * libmailutils/datetime/utcoff.c (mu_utc_offset): Returns int. * libmu_sieve/actions.c (mime_create_ds): Use mu_c_streamftime to format time directly to stream.
Sergey Poznyakoff authored -
-
* imap4d/append.c: Don't reuse msg variable. * po/POTFILES.in: Remove unneeded file.
Sergey Poznyakoff authored -
* configure.ac: Build libmailutils/datetime/Makefile.am * include/mailutils/datetime.h (mu_datetime_julianday) (mu_datetime_dayofweek,mu_datetime_dayofyear) (mu_datetime_year_days): New protos. * libmailutils/Makefile.am (SUBDIRS): Add datetime (libmailutils_la_LIBADD): Add libdatetime.la * libmailutils/base/Makefile.am (libbase_la_SOURCES): Remove date.c and strftime.c. * libmailutils/base/date.c: Remove. * libmailutils/base/strftime.c: Move to libmailutils/datetime * libmailutils/datetime/Makefile.am: New file. * libmailutils/datetime/dow.c: New file. * libmailutils/datetime/doy.c: New file. * libmailutils/datetime/jd.c: New file. * libmailutils/datetime/scantime.c: New file. * libmailutils/datetime/streamftime.c: New file. * libmailutils/datetime/tab.c: New file. * libmailutils/datetime/unixtime.c: New file. * libmailutils/datetime/utcoff.c: New file. * libmailutils/datetime/yd.c: New file. * libmailutils/tests/scantime.at: Fix yday numbers.
Sergey Poznyakoff authored -
* 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.
Sergey Poznyakoff authored
-
- 07 Dec, 2011 3 commits
-
-
* 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.
Sergey Poznyakoff authored -
* imap4d/imap4d.h (silent_expunge): New global. * imap4d/sync.c (silent_expunge): New variable. (action): Suppress EXPUNGE responses if silent_expunge is set. * imap4d/close.c (imap4d_close0): Set silent_expunge before calling mu_mailbox_flush. * imap4d/tests/close-expunge.at: New test. * imap4d/tests/testsuite.at: Include close-expunge.at. * imap4d/tests/Makefile.am (TESTSUITE_AT): Add close-expunge.at. * imap4d/fetch.c (fetch_thunk): Emit BAD response if failed to parse message set. * imap4d/store.c (store_thunk): Emit BAD response if failed to parse flags.
Sergey Poznyakoff authored
- 06 Dec, 2011 2 commits
-
-
-
* libmailutils/base/date.c (mu_scan_datetime): Handle optional blocks (%[ %| %], alternatives %( %| %), "any character" wildcards (%?) and strict character matches (%\C). Return MU_ERR_FORMAT on errors in format string. Compute tm->tm_yday. * libmailutils/diag/errors (MU_ERR_FORMAT): New error code. * libmailutils/tests/scantime.c: Print yday. Print input line with diagnostic messages. * libmailutils/tests/scantime.at: Add more tests. * include/mailutils/util.h (MU_DATETIME_RFC822): Split into two formats: MU_DATETIME_FORM_RFC822, for output formatting, and MU_DATETIME_SCAN_RFC822 for input scanning. All uses changed.
Sergey Poznyakoff authored
-
- 05 Dec, 2011 5 commits
-
-
* libmu_sieve/runtime.c (_mu_sv_instr_push) (_mu_sv_instr_pop): Use mu_list_push and mu_list_pop. * mail/alias.c (recursive_alias_expand): Likewise.
Sergey Poznyakoff authored -
* include/mailutils/list.h (mu_list_push) (mu_list_pop): New functions. * libmailutils/list/pop.c: New file. * libmailutils/list/push.c: New file. * libmailutils/list/Makefile.am (liblist_la_SOURCES): Add new files. * libmailutils/tests/list.at: Test LIFO access. * libmailutils/tests/listop.c: Implement push & pop.
Sergey Poznyakoff authored -
* imap4d/util.c (util_parse_internal_date): Use MU_DATETIME_INTERNALDATE format. * include/mailutils/util.h (MU_DATETIME_IMAP_SEARCH): Rename to MU_DATETIME_INTERNALDATE (previous incorrect definition removed). (MU_DATETIME_RFC822): New format. * libmailutils/address/address.c: Accessors for local_part and domain invalidate email field. (validate_email): New static function. (mu_address_sget_email): Reconstruct email, if necessary. (mu_address_format_string): Likewise. * libmailutils/base/date.c (mu_c_streamftime): Allow for %$ specifier for compatibility with mu_scan_datetime. (mu_scan_datetime): Use %$ to idicate optional end of string. * libmailutils/tests/scantime.at: Update. * libproto/imap/fetch.c (_fill_response): Use MU_DATETIME_RFC822 format. * mu/imap.c (fetch_response_printer): Print subject.
Sergey Poznyakoff authored -
* include/mailutils/stream.h (mu_fixed_memory_stream_create): New proto. * libmailutils/stream/memory_stream.c (mu_fixed_memory_stream_create): New function. * include/mailutils/util.h (mu_parse_imap_date_time) (mu_parse_ctime_date_time): Remove. (mu_scan_datetime): New proto. (mu_strftime): Remove const from the last arg. (MU_DATETIME_FROM,MU_DATETIME_IMAP) (MU_DATETIME_IMAP_SEARCH,MU_DATETIME_INTERNALDATE): New defines. * libmailutils/base/strftime.c: New file. * libmailutils/base/Makefile.am (libbase_la_SOURCES): Add strftime.c. * libmailutils/base/date.c (mu_scan_datetime): New function. * libmailutils/base/mutil.c (mu_strftime): Remove. * libmailutils/tests/scantime.at: New file. * libmailutils/tests/scantime.c: New file. * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add scantime. (TESTSUITE_AT): Add scantime.at. * libmailutils/tests/strftime.c (main): Call mu_set_program_name. * libmailutils/tests/testsuite.at: Include scantime.at * libmu_sieve/actions.c (mime_create_reason): Use mu_c_streamftime. * imap4d/fetch.c (_frt_internaldate): Use mu_scan_datetime. * imap4d/util.c (util_parse_internal_date): Likewise. * libmu_scm/mu_message.c (mu-message-get-envelope-date): Likewise. * libproto/imap/fetch.c (_date_mapper): Likewise. * mail/from.c (hdr_date): Use mu_scan_datetime.
Sergey Poznyakoff authored -
* include/mailutils/util.h (mu_c_streamftime): New prototype. * libmailutils/base/date.c (mu_c_streamftime): New function. * libmailutils/tests/.gitignore: Update. * libmailutils/tests/strftime.at: New test script. * libmailutils/tests/strftime.c: New test program. * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add strftime. (TESTSUITE_AT): Add strftime.at. * libmailutils/tests/testsuite.at: Include strftime.at.
Sergey Poznyakoff authored
-
- 02 Dec, 2011 1 commit
- 01 Dec, 2011 3 commits
-
-
* mail/mailvar.c (_mailvar_symbol_to_array): Remove. (_mailvar_symbol_to_list): New function. (mailvar_make_array): Remove. (mailvar_list_copy): New function. (mailvar_iterator)<varptr,varcnt,pos>: Remove. <varlist,varitr>: New members. (mailvar_iterate_next): Use subordinate iterator. (mailvar_iterate_first): Likewise. (mailvar_print): Use mailvar_make_array.
Sergey Poznyakoff authored -
* include/mailutils/list.h (mu_list_sort): New proto. * libmailutils/list/sort.c: New file. * libmailutils/list/Makefile.am (liblist_la_SOURCES): Add sort.c * libmailutils/tests/listop.c: Implement the sort command. * libmailutils/tests/list.at: Test list sorting.
Sergey Poznyakoff authored
-
- 30 Nov, 2011 7 commits
-
-
* include/mailutils/imap.h (mu_imap_fetch_body) <key>: Rename to section. <fields>: New member. * libproto/imap/fetch.c: Rewrite response item parser. * mu/imap.c: Improve fetch_response_printer
Sergey Poznyakoff authored -
* include/mailutils/list.h (mu_list_folder_t): New typedef. (mu_list_fold, mu_list_rfold): New functions. * libmailutils/list/fold.c: New file. * libmailutils/list/rfold.c: New file. * libmailutils/list/Makefile.am (liblist_la_SOURCES): Add fold.c and rfold.c * libmailutils/list/gmap.c (mu_list_gmap): Access list elements directly, instead of using iterators. * libmailutils/tests/list.at: Add test cases for list folding. * libmailutils/tests/listop.c: Add fold and rfold commands.
Sergey Poznyakoff authored -
* 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.
Sergey Poznyakoff authored -
* 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".
Sergey Poznyakoff authored -
* include/mailutils/address.h (mu_address_create_null): New proto. * libmailutils/address/address.c (mu_address_create_null): New function.
Sergey Poznyakoff authored -
* 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.
Sergey Poznyakoff authored -
* libmailutils/imapio/getline.c (mu_imapio_getline): Fix the call to realloc.
Sergey Poznyakoff authored
-
- 29 Nov, 2011 1 commit
-
-
* imap4d/fetch.c (fetch_runtime_closure) <msglist>: New member. (frt_register_message,frt_unregister_messages): New functions. (fetch_get_part_rfc822): Look into encapsulated rfc822 messages. (_frt_body_text,_frt_header) (_frt_header_fields): Use frt_unregister_messages. (imap4d_fetch0): Initialize all fields in struct fetch_runtime_closure. Destroy msglist when finished using it. * imap4d/tests/fetch.at: Add test cases for nested message/rfc822. * testsuite/spool/msg.mbox: Add a message with nested message/rfc822 part.
Sergey Poznyakoff authored
-
- 28 Nov, 2011 2 commits
-
-
* imap4d/io.c (gettok): Fix memory overwrite. * imap4d/tests/fetch.at: Add checks for HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT applied to message/rfc822 parts. * testsuite/spool/msg.mbox: New file. * testsuite/spool/DISTFILES: Add msg.mbox.
Sergey Poznyakoff authored