1. 17 Dec, 2016 2 commits
    • * examples/rename.c: Remove.
      * examples/fcopy.c: New file.
      * examples/fremove.c: New file.
      * examples/frename.c: New file.
      * examples/Makefile.am: Update.
      
      * include/mailutils/util.h (mu_rename_file): Add flags.
      (mu_remove_file): New function.
      (MU_COPY_OVERWRITE): New flag.
      * libmailutils/base/renamefile.c: New file.
      * libmailutils/base/Makefile.am: Add newe file.
      * libmailutils/base/copyfile.c: Fix error handling.
      * libmailutils/base/renamefile.c (mu_rename_file): Refuse to proceed if
      the destination file exists and MU_COPY_OVERWRITE flag is not set
      * libmailutils/diag/errors (MU_ERR_REMOVE_SOURCE)
      (MU_ERR_RESTORE_META): New errors
      
      * imap4d/rename.c (imap4d_rename): Use mu_rename_file
      * mh/forw.c: Likewise.
      * mh/mh_whatnow.c: Likewise.
      * mh/mhn.c: Likewise.
      * mh/send.c: Likewise.
      
      * include/mailutils/cstr.h (mu_str_count): New proto.
      * include/mailutils/util.h (mu_file_name_is_safe): New proto.
      * libmailutils/string/safefilename.c: New file.
      * libmailutils/string/strcount.c: New file.
      * libmailutils/string/Makefile.am: Update.
      Sergey Poznyakoff authored
    • * libmailutils/base/copyfile.c: New file.
      * libmailutils/base/renamefile.c: New file.
      
      * include/mailutils/util.h (mu_copy_file)
      (mu_rename_file): New protos.
      
      * libmailutils/base/Makefile.am: Add new files.
      * examples/rename.c: New file.
      * examples/Makefile.am: Add new files.
      
      * NEWS: Update.
      Sergey Poznyakoff authored
  2. 16 Dec, 2016 1 commit
  3. 15 Dec, 2016 2 commits
  4. 14 Dec, 2016 4 commits
  5. 13 Dec, 2016 10 commits
  6. 12 Dec, 2016 5 commits
  7. 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
  8. 10 Dec, 2016 2 commits
  9. 09 Dec, 2016 2 commits
  10. 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
  11. 07 Dec, 2016 3 commits
    • Sergey Poznyakoff authored
    • * 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
  12. 06 Dec, 2016 3 commits
    • * libmu_sieve/comparator.c: Use mu_glob_compile instead of fnmatch.
      Sergey Poznyakoff authored
    • * 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
  13. 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
  14. 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
  15. 03 Dec, 2016 1 commit