- 12 Dec, 2016 3 commits
-
-
* libmailutils/base/ctparse.c (parse_type) (parse_subtype): Fix memory allocation
Sergey Poznyakoff authored -
-
* sieve/tests/environment.at: New testcase. * sieve/tests/Makefile.am: Add new file. * sieve/tests/testsuite.at: Include new file. * lib/muscript.h (mu_script_init): Change signature. * lib/muscript_priv.h (mu_script_fun) <script_init>: Likewise. * lib/guile.c (scheme_init): Update. * lib/python.c (python_init): Update. * lib/script.c (mu_script_init): Pass environment to the script_init method. * lib/sieve.c (sieve_init): Set sieve environment. * maidag/script.c (apply_script): Set environment. * mh/inc.c: Likewise.
Sergey Poznyakoff authored
-
- 11 Dec, 2016 1 commit
-
-
* include/mailutils/sieve.h (mu_sieve_require_environment): New proto. * libmu_sieve/Makefile.am: Add environment.c * libmu_sieve/environment.c: New file. * libmu_sieve/require.c: Handle "environment" keyword. * libmu_sieve/sieve-priv.h (mu_sieve_machine) <exenv>: New member. * libmu_sieve/sieve.l: Bugfixes * libmu_sieve/variables.c: Add missing static qualifiers * sieve/sieve.c: New option --environment
Sergey Poznyakoff authored
-
- 10 Dec, 2016 2 commits
-
-
- 09 Dec, 2016 2 commits
-
-
-
* include/mailutils/util.h (mu_content_type, mu_param): New structs. (mu_content_type_t): New typedef. (mu_content_type_parse, mu_content_type_destroy): New protos. * libmailutils/base/ctparse.c: New file. * libmailutils/base/Makefile.am: Add new file. * imap4d/fetch.c: Use mu_content_type_parse to parse the header. * libmailutils/tests/conttype.c: New file. * libmailutils/tests/Makefile.am: Add new file.
Sergey Poznyakoff authored
-
- 08 Dec, 2016 2 commits
-
-
Don't set mu_log_tag, leave that to the caller. * libmailutils/cli/cli.c (mu_cli_ext): Don't set mu_log_tag. * libmailutils/stdstream/strerr.c: Use MU_LOG_TAG macro from syslog.h * sieve/sieve.c: Redo --no-program-name support
Sergey Poznyakoff authored -
* libmu_sieve/util.c (mu_sieve_vlist_compare): Rewrite. * include/mailutils/sieve.h (mu_sieve_retrieve_t): Change signature. All uses changed. (mu_sieve_relational_count): Remove. (mu_sieve_vlist_compare): Change signature. * libmu_sieve/extensions/list.c (list_retrieve_header): Always return meaningful status. * libmu_sieve/tests.c (mu_sieve_relational_count): Remove. (retrieve_address,retrieve_envelope): Return meaningful status. (retrieve_header): Iterate over all mime parts, if required. (sieve_test_address,sieve_test_header): Rewrite. * libmu_sieve/variables.c (sieve_test_string): Rewrite using mu_sieve_vlist_compare.
Sergey Poznyakoff authored
-
- 07 Dec, 2016 3 commits
-
-
-
* include/mailutils/glob.h: File was missing in df608ed0 * include/mailutils/Makefile.am: Add glob.h
Sergey Poznyakoff authored -
* include/mailutils/sieve.h (mu_sieve_string): New fields "constant" and "changed". (mu_sieve_match_part_tags): New extern. (mu_sieve_relational_count) (mu_sieve_require_variables) (mu_sieve_has_variables) (mu_sieve_string_get): New functions. * libmu_sieve/variables.c: New file. * libmu_sieve/Makefile.am: Add variables.c * libmu_sieve/comparator.c: Use mu_sieve_string_get to obtain the actual value of the string. * libmu_sieve/require.c: Support the "variables" extension. * libmu_sieve/sieve-priv.h (mu_sieve_machine): New fields vartab, match_string, match_buf, match_count, match_max. (mu_i_sv_copy_variables) (mu_i_sv_expand_variables): New protos. * libmu_sieve/sieve.l (line_add): zero length means add entire asciiz string. * libmu_sieve/sieve.y (mu_sieve_machine_reset): Reset the new fields. (mu_sieve_machine_clone): Copy variables and initialize new fields. (string_rescan): New function. (sieve_parse): Rescan string to determine their properties. * libmu_sieve/strexp.c (update_len): Allow for NULL replacement values. * libmu_sieve/string.c (mu_sieve_string_get): New function. (mu_sieve_string): Use it. * libmu_sieve/tests.c (do_count): Rename to mu_sieve_relational_count, make global. All uses changed. (match_part_tags): Rename to mu_sieve_match_part_tags, make global. All uses changed. * sieve/tests/variables.at: New file. * sieve/tests/Makefile.am: Add new testcases. * sieve/tests/testsuite.at: Likewise.
Sergey Poznyakoff authored
-
- 06 Dec, 2016 3 commits
-
-
* include/mailutils/opool.h (mu_nonlocal_jmp_t): New type. (mu_opool_setjmp,mu_opool_clrjmp): New functions. (mu_opool_setup_nonlocal_jump): New macro. * libmailutils/base/opool.c (_mu_opool)<jmp>: New field. (alloc_bucket): Do a non-local jump on out of memory condition, if jmp is not NULL. (mu_opool_setjmp,mu_opool_clrjmp): New functions. * libmailutils/base/glob.c: New file. * libmailutils/base/Makefile.am: Add glob.c * include/mailutils/glob.h: New file. * include/mailutils/mailutils.h: Include glob.h * libmailutils/tests/globtest.c: New file. * libmailutils/tests/globtest.at: New test. * libmailutils/tests/Makefile.am: Add new files. * libmailutils/tests/testsuite.at: Include new test.
Sergey Poznyakoff authored -
* libmailutils/stream/stream.c (mu_stream_ioctl): Don't flush read buffer.
Sergey Poznyakoff authored
- 05 Dec, 2016 1 commit
-
-
* include/mailutils/opool.h (mu_opool_detach): New proto. * libmailutils/base/opool.c (mu_opool_bucket): Redo as union to ensure proper alignment. All uses changed. (mu_opool_detach): New function.
Sergey Poznyakoff authored
-
- 04 Dec, 2016 1 commit
-
-
The purpose is to simplify the machine structure and to ensure its clones are completely independent of the master instance. * include/mailutils/sieve.h (mu_sieve_command): New struct. (mu_sieve_record): New enum (mu_sieve_registry_t): Generalize for storing various types of objects. (mu_sieve_test_lookup,mu_sieve_action_lookup) (mu_sieve_require_action,mu_sieve_require_test) (mu_sieve_require_comparator): Remove. (mu_sieve_register_test_ext,mu_sieve_register_test) (mu_sieve_register_action_ext,mu_sieve_register_action) (mu_sieve_register_comparator) (mu_sieve_load_ext): Change return type. (mu_sieve_registry_require,mu_sieve_unload_ext): New functions. (mu_sieve_machine_inherit): Rename to mu_sieve_machine_clone. * libmu_sieve/sieve-priv.h (mu_sieve_machine): Remove source_list, test_list, action_list, and comp_list. Add a single registry list instead. Add space for file and command (action and test) names: idspace, idcount, idmax. Remove unused field "stack"; (mu_i_sv_lex_finish): Change prototype. (_mu_i_sv_instr_push,_mu_i_sv_instr_pop): Remove protos. (mu_i_sv_id_canon,mu_i_sv_id_num) (mu_i_sv_id_str,mu_i_sv_free_idspace): New protos. * libmu_sieve/register.c: Rename to registry.c * libmu_sieve/registry.c (mu_sieve_test_lookup) (mu_sieve_action_lookup): Remove. (mu_sieve_require_test,mu_sieve_require_action): Remove. (mu_sieve_registry_require): New function. (mu_sieve_registry_add,mu_sieve_registry_lookup): New functions. * libmu_sieve/Makefile.am: Update. * libmu_sieve/comparator.c: Rewrite using new registry functions. * libmu_sieve/load.c (mu_sieve_load_ext): Return module handle. (mu_sieve_unload_ext): New function. * libmu_sieve/mem.c (mu_sieve_free): Gracefully handle NULL argument. (mu_i_sv_id_canon,mu_i_sv_id_num,mu_i_sv_id_str): New functions. * libmu_sieve/prog.c (mu_i_sv_locus): Store index of the file name in the id space, instead of pointer to the name itself. * libmu_sieve/require.c (mu_sieve_require): Rewrite. * libmu_sieve/runtime.c (_mu_i_sv_instr_source): Expect ID index as argument. (_mu_i_sv_instr_push) (_mu_i_sv_instr_pop): Remove unused instructions. * libmu_sieve/sieve.l (file_names): Remove. Use mu_sieve_machine idspace instead. * libmu_sieve/sieve.y (mu_sieve_machine_clone) (mu_sieve_machine_dup): Rewrite. (mu_sieve_machine_destroy): Free idspace and registry * examples/numaddr.c: Reflect changes. * libmu_sieve/extensions/editheader.c: Likewise. * libmu_sieve/extensions/list.c: Likewise. * libmu_sieve/extensions/moderator.c: Likewise. * libmu_sieve/extensions/pipe.c: Likewise. * libmu_sieve/extensions/spamd.c: Likewise. * libmu_sieve/extensions/timestamp.c: Likewise. * libmu_sieve/extensions/vacation.c: Likewise.
Sergey Poznyakoff authored
-
- 03 Dec, 2016 2 commits
-
-
-
* include/mailutils/sieve.h (SVT_IDENT): Remove. * libmu_sieve/comparator.c (mu_sieve_match_part_checker): Remove unused variable. * libmu_sieve/mem.c (mu_sieve_reclaim_list): Remove function. * libmu_sieve/sieve.y: Remove leftover uses of SVT_IDENT. * libmu_sieve/util.c: Likewise. * libmu_sieve/sieve-priv.h: Remove useless prototypes.
Sergey Poznyakoff authored
-
- 02 Dec, 2016 1 commit
-
-
Strings are allocated in a per-machine string space. String and argument lists form contiguous arrays of structures. Regular ex- pressions are compiled when they are needed. Compiled expressions are cached for eventual reuse.
Sergey Poznyakoff authored
-
- 01 Dec, 2016 1 commit
-
-
After successful delivery, maidag would switch back to root privileges too early, due to which the mailbox would be closed when running with root UID. I the property file (.mu-prop) did not exist, it would therefore be created by root. Subsequent attempts to open it by user would fail. One of consequences is that the UIDVALIDITY value would be recalculated each time the mailbox is opened. This would force imap4 clients to rescan mailboxes infinitely, as each scan would change the UIDVALIDITY again. This patch fixes the initialization of UIDVALIDITY and fixes maidag to switch back to root privileges only after closing the mailbox. It also makes sure MH and Maildir mailboxes write .mu-prop upon closing, not upon destroying the mailbox. * libmailutils/base/amd.c (amd_close): Save property. (_amd_scan0): Use mailbox modification time as initial uidvalidity value. * maidag/deliver.c (deliver_to_mailbox): Remove uselsess UID/GID transitions.
Sergey Poznyakoff authored
-
- 29 Nov, 2016 3 commits
-
-
* include/mailutils/sieve.h (mu_sieve_alloc) (mu_sieve_palloc,mu_sieve_prealloc) (mu_sieve_pfree,mu_sieve_pstrdup): Remove. (mu_sieve_mstrdup,mu_sieve_mrealloc) (mu_sieve_mfree): Remove. (mu_sieve_reclaim_t): New typedef. (mu_sieve_calloc,mu_sieve_strdup) (mu_sieve_realloc) (mu_sieve_reclaim_default,mu_sieve_reclaim_list) (mu_sieve_reclaim_value,mu_sieve_reclaim_tag): New functions (mu_sieve_value_create): Change prototype (take mu_sieve_machine_t as first argument) * libmu_sieve/mem.c: New file. * libmu_sieve/Makefile.am: Add new file. * libmu_sieve/comparator.c: Use new allocation functions. * libmu_sieve/prog.c: Likewise. * libmu_sieve/register.c: Likewise. * libmu_sieve/sieve.l: Likewise. * libmu_sieve/sieve.y: Likewise. * libmu_sieve/util.c: Likewise. * doc/texinfo/libmu_sieve.texi: Update (needs revision).
Sergey Poznyakoff authored -
* include/mailutils/list.h (mu_list_remove) (mu_list_remove_nd): Second arg is const. * libmailutils/list/remove.c: Likewise.
Sergey Poznyakoff authored -
-
- 28 Nov, 2016 1 commit
-
-
* include/mailutils/sieve.h (mu_sieve_handler_t): Change signature: remove args and tags arguments, they are contained in struct mu_sieve_machine now. (mu_sieve_get_comparator) (mu_sieve_relcmpn_t): Change signature. (mu_sieve_tag_lookup,mu_sieve_tag_lookup_untyped): Remove (mu_sieve_get_tag,mu_sieve_get_tag_untyped): New protos. (mu_sieve_value_get_optional): Replace by mu_sieve_get_arg_optional. (mu_sieve_value_get_untyped): Replace by mu_sieve_get_arg_untyped. (mu_sieve_value_get): Replace by mu_sieve_get_arg. All uses changed. * libmu_sieve/sieve-priv.h (mu_sieve_machine): New members: arg_list and tag_list * libmu_sieve/runtime.c (instr_run): Set up identifier, arg_list, and tag_list in mu_sieve_machine_t before calling the handler. Reset them afterward. * libmu_sieve/util.c (mu_sieve_value_get_optional): Replace by mu_sieve_get_arg_optional. (mu_sieve_value_get_untyped): Replace by mu_sieve_get_arg_untyped. (mu_sieve_value_get): Replace by mu_sieve_get_arg. (mu_sieve_tag_lookup): Replace by mu_sieve_get_tag (mu_sieve_tag_lookup_untyped): Replace by mu_sieve_get_tag_untyped
Sergey Poznyakoff authored
-
- 26 Nov, 2016 3 commits
-
-
* include/mailutils/sieve.h (mu_sieve_data_type): Remove SVT_VALUE_LIST. (mu_sieve_value_storage): Named union for use in mu_sieve_value_t; remove the tag field. (mu_sieve_tag_lookup): Change prototype. (mu_sieve_value_get): Change prototype. (mu_sieve_value_get_optional) (mu_sieve_value_get_untyped): New functions. (mu_sieve_arg_error): Removed proto. * libmu_sieve/sieve.y: Remove SVT_VALUE_LIST support. * libmu_sieve/util.c (mu_sieve_value_create) (mu_sieve_type_str,mu_sieve_vlist_do): Remove SVT_VALUE_LIST support. (mu_sieve_value_get): Rewrite. (mu_sieve_value_get_untyped) (mu_sieve_value_get_optional): New functions. (mu_sieve_arg_error): Remove. (mu_sieve_tag_lookup): Rewrite. (mu_sieve_tag_lookup_untyped): New function. * doc/texinfo/libmu_sieve.texi: Update. libmu_sieve/tests.c libmu_sieve/actions.c libmu_sieve/extensions/editheader.c libmu_sieve/extensions/list.c libmu_sieve/extensions/moderator.c libmu_sieve/extensions/pipe.c libmu_sieve/extensions/spamd.c libmu_sieve/extensions/timestamp.c libmu_sieve/extensions/vacation.c libmu_sieve/relational.c examples/numaddr.c
Sergey Poznyakoff authored -
* libmu_sieve/sieve-priv.h (sieve_op_t) <unum>: New field. * libmu_sieve/sieve.l: Leave one string interpreter slot.
Sergey Poznyakoff authored -
* libmailutils/list/sort.c (mu_list_sort_r): New function. * include/mailutils/list.h: Provide prototype.
Sergey Poznyakoff authored
-
- 25 Nov, 2016 1 commit
-
-
* libmu_sieve/encoded.c: New file. * libmu_sieve/strexp.c: New file. * libmu_sieve/Makefile.am: Add new files. * libmu_sieve/require.c (mu_sieve_require): Understand "encoded-character". * libmu_sieve/sieve-priv.h (mu_i_sv_interp_t): New typedef. (mu_i_sv_expand_encoded_char): New proto. (mu_sieve_require_encoded_character): New proto. * libmu_sieve/sieve.l (string): Rewrite via line_.* functions. This fixes memory leaks on mu_sieve_machine_destroy. (line_finish): Expand ${} sequences before returning. (mu_sieve_require_encoded_character): New function. * sieve/tests/enc-char.at: New file. * sieve/tests/Makefile.am: Add enc-char.at * sieve/tests/testsuite.at: Likewise.
Sergey Poznyakoff authored
-
- 24 Nov, 2016 4 commits
-
-
* include/mailutils/sieve.h (mu_sieve_action_log_t): Change proto. * lib/sieve.c (_sieve_action_log): Rewrite. * libmu_sieve/util.c (mu_sieve_log_action): Rewrite. * python/libmu_py/sieve.c (_sieve_action_printer): Rewrite. * sieve/sieve.c (_sieve_action_log): Rewrite.
Sergey Poznyakoff authored -
* include/mailutils/sieve.h (MU_SIEVE_DEBUG_TRACE) (MU_SIEVE_DEBUG_INSTR,MU_SIEVE_DEBUG_DISAS) (MU_SIEVE_DRY_RUN): Remove. (mu_sieve_machine_init_ex): Remove proto. (mu_sieve_set_dbg_stream,mu_sieve_get_dbg_stream) (mu_sieve_stream_save) (mu_sieve_stream_restore): New protos. * libmu_sieve/runtime.c (INSTR_DISASS,INSTR_DEBUG): Reimplement. * libmu_sieve/sieve-priv.h (MU_SV_SAVED_ERR_STATE) (MU_SV_SAVED_DBG_STATE,MU_SV_SAVED_STATE): New bitflags. (mu_sieve_state_disass): New constant. (mu_sieve_machine)<state_flags, err_mode> <err_locus,dbg_mode,dbg_locus>: New members. <dbgstream>: New member. * libmu_sieve/sieve.y (mu_sieve_machine_init_ex): Remove. (mu_sieve_machine_dup, mu_sieve_machine_inherit): Fix. (mu_sieve_set_dbg_stream) (mu_sieve_get_dbg_stream): New functions. (mu_sieve_machine_destroy): Destroy dbgstream. (with_machine): Preserve stream state (mode & locus). * libmu_sieve/util.c (mu_i_sv_debug,mu_i_sv_debug_command): Use ioctl instead of format strings. (mu_sieve_stream_save, mu_sieve_stream_restore): New functions. * python/libmu_py/sieve.c (api_sieve_machine_init): Use mu_sieve_machine_init. * sieve/sieve.c: Improve help output. (main): Dump disassembled code to standard output.
Sergey Poznyakoff authored -
* libmu_sieve/runtime.c (_mu_i_sv_instr_nop): Remove. * libmu_sieve/sieve-priv.h: Likewise.
Sergey Poznyakoff authored -
* bootstrap.conf (mu_sieve_debug, mu_sieve_trace): Remove. * include/mailutils/sieve.h (mu_sieve_debug): Remove. * examples/numaddr.c: Remove calls to mu_sieve_trace. * libmu_sieve/extensions/list.c: Likewise. * libmu_sieve/extensions/moderator.c: Likewise. * libmu_sieve/extensions/pipe.c: Likewise. * libmu_sieve/extensions/spamd.c: Likewise. * libmu_sieve/extensions/timestamp.c: Likewise. * libmu_sieve/extensions/vacation.c: Likewise. * libmu_sieve/tests.c: Likewise. * libmu_sieve/runtime.c: Use new debugging/tracing functions. * libmu_sieve/sieve-priv.h (mu_i_sv_debug, mu_i_sv_trace) (mu_i_sv_debug_command) (mu_i_sv_argf, mu_i_sv_valf): New prototypes. * libmu_sieve/sieve.y (mu_i_sv_valf, mu_i_sv_argf): New functions. * libmu_sieve/util.c (mu_sieve_debug): Remove. (mu_i_sv_print_value_list): Remove. (mu_i_sv_print_tag_list): Remove. (mu_sieve_trace): Remove. (mu_i_sv_tagf): New function. (mu_i_sv_debug): New function. (mu_i_sv_trace): New function. (mu_i_sv_debug_command): New function.
Sergey Poznyakoff authored
-
- 23 Nov, 2016 4 commits
-
-
-
Instead of keeping individual debug flags for each Sieve machine, use global debugging mechanism, category "sieve". The following levels are defined: trace1 - print parse tree before optimization trace2 - print parse tree after optimization trace3 - print parser traces trace4 - print tests and actions being executed trace8 - print disassembled code, don't run trace9 - print each Sieve instruction being executed * include/mailutils/sieve.h (mu_sieve_get_debug_level) (mu_sieve_set_debug_level): Remove. (mu_sieve_is_dry_run,mu_sieve_set_dry_run * lib/script.c (mu_script_debug_flags): Redo. * lib/sieve.c (sieve_init): Remove call to obsoleted mu_sieve_set_debug_level. * examples/numaddr.c: Use mu_sieve_trace * libmu_sieve/extensions/list.c: Likewise. * libmu_sieve/extensions/moderator.c: Likewise. * libmu_sieve/extensions/pipe.c: Likewise. * libmu_sieve/extensions/spamd.c: Likewise. * libmu_sieve/extensions/timestamp.c: Likewise. * libmu_sieve/extensions/vacation.c: Likewise. * libmu_sieve/tests.c: Likewise. * libmu_sieve/runtime.c (INSTR_DEBUG,INSTR_DISASS): Rewrite. (mu_sieve_get_debug_level): Remove. (mu_sieve_is_dry_run_: Rewrite. (mu_sieve_set_dry_run): New function. (mu_sieve_disass): Rewrite. * libmu_sieve/sieve-priv.h (mu_sieve_machine) <debug_level>: Remove. <dry_run>: New field. * libmu_sieve/sieve.y (mu_sieve_set_debug_level): Remove. * libmu_sieve/util.c (mu_sieve_trace): New function. * sieve/sieve.c: Rewrite support for --dry-run and --debug. * sieve/tests/ext.at: Use --libdir-prefix instead of -L
Sergey Poznyakoff authored -
Three objectives: 1. Simplify code. 2. Produce optimized sieve code. 3. Improve error reporting. 4. Prepare for further extensions * include/mailutils/sieve.h (mu_sieve_tag_checker_t): Change signature (take mu_sieve_machine_t as the first arg). All uses changed. (mu_sieve_require): Likewise. (mu_sieve_yydebug): Remove global. * libmu_sieve/sieve-priv.h (mu_locus_range): New struct. (YYLTYPE): New define (mu_sieve_state): New enum. (mu_sieve_machine): New members: string_pool, state. (mu_sieve_node_type): New enum. (mu_sieve_node): New struct. Remove unused prototypes. * libmu_sieve/sieve.l: Keep track of code locations. Use opool for constructing string values. * libmu_sieve/sieve.y: Rewrite. First build the parse tree. Then optimize it. Finally, generate code. * libmu_sieve/tests.c (sieve_test_true,sieve_test_false): Remove. True and false tests are always optimized away. * libmu_sieve/util.c (mu_sv_compile_error): Remove. * libmu_sieve/actions.c: Use mu_diag_at_locus to report errors and mu_i_sv_error to mark sieve machine as being in error state. * libmu_sieve/comparator.c: Likewise. * libmu_sieve/prog.c (mu_sv_code): Replace with mu_i_sv_code. (mu_sv_code_instr,mu_sv_code_handler) (mu_sv_code_list,mu_sv_code_number) (mu_sv_code_string,mu_sv_code_source) (mu_sv_code_line,mu_sv_change_source) (mu_sv_code_action,mu_sv_code_test) (mu_sv_code_anyof,mu_sv_code_allof): Remove. (mu_i_sv_locus,mu_i_sv_code_action) (mu_i_sv_code_test): New function. (mu_sv_code_command): Replace with a static function. * libmu_sieve/require.c (mu_sieve_require): Take ptr to machine as the first arg. * libmu_sieve/runtime.c (mu_sieve_mailbox) (mu_sieve_message): Refuse to run if the machine is in error state. * sieve/sieve.c: Update. * sieve/tests/i-numeric.at: Update expected error message. * libmailutils/diag/diag.c (mu_diag_at_locus): Don't pass locus if mu_file is NULL. * libmu_auth/ldap.c (_mu_entry_to_auth_data): Remove leftover mu_error.
Sergey Poznyakoff authored
-
- 14 Nov, 2016 1 commit
-
-
This was accidentally broken by commit eea2c4aa. * include/mailutils/mailbox.h (mu_mailbox_expand_name): New proto. * libmailutils/mailbox/mbx_default.c (mu_mailbox_expand_name): New function. (mu_mailbox_create_default): Use it. (mu_set_folder_directory): Accept NULL as argument. (mu_folder_directory): Reset default value after assiging it. This way the folder directory still defaults to the same value as earlier, but can be reset to NULL, if so desired. (plus_expand): Return a copy of the input string if folder is NULL. * mail/copy.c (append_to_mailbox): Use mu_mailbox_create, as the mailbox name has already been expanded. * mail/file.c (mail_expand_name): Use mu_mailbox_expand_name. (mail_file): Use mu_mailbox_create, as the mailbox name has already been expanded. * mail/mailvar.c (mailvar_cmd): New enum. (mailvar_symbol) <handler>: Change signature and return type. (mailvar_set): Rewrite. Take care not to modify the variable if the handler (if any) returns non-null or if the memory can't be allocated. (set_folder): Handler for the "folder" variable. * mail/tests/copy01.at: New testcase. * mail/tests/copy02.at: New testcase. * mail/tests/copy03.at: New testcase. * mail/tests/copy04.at: New testcase. * mail/tests/Makefile.am: Add new tests. * mail/tests/testsuite.at (MUT_MAIL_CMD): Set MAILRC to /dev/null. Add new tests.
Sergey Poznyakoff authored
-
- 11 Nov, 2016 1 commit
-
-