This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Mailutils".
http://git.savannah.gnu.org/cgit/mailutils.git/commit/?id=506086e05f25c8082993940eac0883c7d72d485a The branch, master has been updated via 506086e05f25c8082993940eac0883c7d72d485a (commit) via 81750c9d313c09c0af1b5087bf2b0f584256d416 (commit) from 57e0b97994f04b8d3f36ef3c45a99941b4f011bc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 506086e05f25c8082993940eac0883c7d72d485a Author: Sergey Poznyakoff <g...@gnu.org> Date: Mon Dec 12 09:31:31 2016 +0200 Minor fix commit 81750c9d313c09c0af1b5087bf2b0f584256d416 Author: Sergey Poznyakoff <g...@gnu.org> Date: Mon Dec 12 08:45:23 2016 +0200 Add tests for sieve environment. Initialize environment in maidag and inc * 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. ----------------------------------------------------------------------- Summary of changes: gint | 2 +- lib/guile.c | 2 +- lib/muscript.h | 3 ++- lib/muscript_priv.h | 2 +- lib/python.c | 2 +- lib/script.c | 5 ++-- lib/sieve.c | 31 ++++++++++++++++++++++- libmu_sieve/util.c | 4 +-- maidag/script.c | 6 +++-- mh/inc.c | 4 ++- sieve/tests/Makefile.am | 1 + sieve/tests/{size.at => environment.at} | 41 +++++++++++++++++-------------- sieve/tests/testsuite.at | 1 + 13 files changed, 73 insertions(+), 31 deletions(-) copy sieve/tests/{size.at => environment.at} (67%) diff --git a/gint b/gint index fd86bf7..42f4712 160000 --- a/gint +++ b/gint @@ -1 +1 @@ -Subproject commit fd86bf7d44b0c970771830692ae7491447ebe8b1 +Subproject commit 42f4712085b40173eaea58e14b1a579291a6fe3a diff --git a/lib/guile.c b/lib/guile.c index f49c9d5..920b8d5 100644 --- a/lib/guile.c +++ b/lib/guile.c @@ -25,7 +25,7 @@ static int initialized; static int -scheme_init (const char *prog, mu_script_descr_t *pdescr) +scheme_init (const char *prog, const char **env, mu_script_descr_t *pdescr) { if (!initialized) { diff --git a/lib/muscript.h b/lib/muscript.h index 75ab0af..04ca166 100644 --- a/lib/muscript.h +++ b/lib/muscript.h @@ -27,7 +27,8 @@ typedef struct mu_script_descr *mu_script_descr_t; mu_script_t mu_script_lang_handler (const char *lang); mu_script_t mu_script_suffix_handler (const char *name); -int mu_script_init (mu_script_t scr, const char *name, mu_script_descr_t *); +int mu_script_init (mu_script_t scr, const char *name, const char **env, + mu_script_descr_t *); int mu_script_done (mu_script_t, mu_script_descr_t); int mu_script_process_msg (mu_script_t, mu_script_descr_t, mu_message_t msg); void mu_script_log_enable (mu_script_t scr, mu_script_descr_t descr, diff --git a/lib/muscript_priv.h b/lib/muscript_priv.h index f97899f..c7bcfd9 100644 --- a/lib/muscript_priv.h +++ b/lib/muscript_priv.h @@ -2,7 +2,7 @@ struct mu_script_fun { char *lang; char *suf; - int (*script_init) (const char *, mu_script_descr_t *); + int (*script_init) (const char *, const char **, mu_script_descr_t *); int (*script_done) (mu_script_descr_t); int (*script_process) (mu_script_descr_t, mu_message_t); int (*script_log_enable) (mu_script_descr_t descr, const char *name, diff --git a/lib/python.c b/lib/python.c index 673955f..7bd3291 100644 --- a/lib/python.c +++ b/lib/python.c @@ -23,7 +23,7 @@ #include <string.h> static int -python_init (const char *prog, mu_script_descr_t *pdescr) +python_init (const char *prog, const char **env, mu_script_descr_t *pdescr) { *pdescr = (mu_script_descr_t) strdup (prog); if (!*pdescr) diff --git a/lib/script.c b/lib/script.c index 2ac5378..1660947 100644 --- a/lib/script.c +++ b/lib/script.c @@ -108,9 +108,10 @@ mu_script_suffix_handler (const char *name) } int -mu_script_init (mu_script_t scr, const char *name, mu_script_descr_t *pdescr) +mu_script_init (mu_script_t scr, const char *name, const char **env, + mu_script_descr_t *pdescr) { - return scr->script_init ? scr->script_init (name, pdescr) : 0; + return scr->script_init ? scr->script_init (name, env, pdescr) : 0; } int diff --git a/lib/sieve.c b/lib/sieve.c index cfdadb6..7e9bf30 100644 --- a/lib/sieve.c +++ b/lib/sieve.c @@ -75,8 +75,36 @@ _sieve_action_log (mu_sieve_machine_t mach, mu_stream_unref (stream); } +static void +sieve_setenv (mu_sieve_machine_t mach, const char **env) +{ + if (env) + { + char *buffer = NULL; + size_t buflen = 0; + size_t i; + char *p; + + for (i = 0; env[i]; i++) + { + if (buflen < strlen (env[i]) + 1) + { + buflen = strlen (env[i]) + 1; + buffer = mu_realloc (buffer, buflen); + } + strcpy (buffer, env[i]); + p = strchr (buffer, '='); + if (!p) + continue; + *p++ = 0; + mu_sieve_set_environ (mach, buffer, p); + } + free (buffer); + } +} + static int -sieve_init (const char *prog, mu_script_descr_t *pdescr) +sieve_init (const char *prog, const char **env, mu_script_descr_t *pdescr) { int rc; mu_sieve_machine_t mach; @@ -86,6 +114,7 @@ sieve_init (const char *prog, mu_script_descr_t *pdescr) { if (mu_script_sieve_log) mu_sieve_set_logger (mach, _sieve_action_log); + sieve_setenv (mach, env); rc = mu_sieve_compile (mach, prog); } *pdescr = (mu_script_descr_t) mach; diff --git a/libmu_sieve/util.c b/libmu_sieve/util.c index 15a2ea7..9a0b7db 100644 --- a/libmu_sieve/util.c +++ b/libmu_sieve/util.c @@ -476,13 +476,13 @@ mu_sieve_stream_save (mu_sieve_machine_t mach) if (mu_stream_ioctl (mach->errstream, MU_IOCTL_LOGSTREAM, MU_IOCTL_LOGSTREAM_GET_MODE, &mach->err_mode) == 0 && mu_stream_ioctl (mach->errstream, MU_IOCTL_LOGSTREAM, - MU_IOCTL_LOGSTREAM_SET_LOCUS, &mach->err_locus) == 0) + MU_IOCTL_LOGSTREAM_GET_LOCUS, &mach->err_locus) == 0) mach->state_flags |= MU_SV_SAVED_ERR_STATE; if (mu_stream_ioctl (mach->dbgstream, MU_IOCTL_LOGSTREAM, MU_IOCTL_LOGSTREAM_GET_MODE, &mach->dbg_mode) == 0 && mu_stream_ioctl (mach->dbgstream, MU_IOCTL_LOGSTREAM, - MU_IOCTL_LOGSTREAM_SET_LOCUS, &mach->dbg_locus) == 0) + MU_IOCTL_LOGSTREAM_GET_LOCUS, &mach->dbg_locus) == 0) mach->state_flags |= MU_SV_SAVED_DBG_STATE; mach->state_flags |= MU_SV_SAVED_STATE; diff --git a/maidag/script.c b/maidag/script.c index fdb0b92..5437ac4 100644 --- a/maidag/script.c +++ b/maidag/script.c @@ -58,6 +58,8 @@ struct apply_script_closure mu_message_t msg; }; +static char const *script_env[] = { "location=MDA", "phase=during", NULL }; + static int apply_script (void *item, void *data) { @@ -67,7 +69,7 @@ apply_script (void *item, void *data) int rc; struct stat st; mu_script_descr_t sd; - + progfile = mu_expand_path_pattern (scr->pat, clos->auth->name); if (stat (progfile, &st)) { @@ -79,7 +81,7 @@ apply_script (void *item, void *data) return 0; } - rc = mu_script_init (scr->scr, progfile, &sd); + rc = mu_script_init (scr->scr, progfile, script_env, &sd); if (rc) mu_error (_("initialization of script %s failed: %s"), progfile, mu_strerror (rc)); diff --git a/mh/inc.c b/mh/inc.c index 1477dd5..b0ffa41 100644 --- a/mh/inc.c +++ b/mh/inc.c @@ -40,6 +40,7 @@ static const char *append_folder; static const char *move_to_mailbox; static const char *script_file; static const char *script_lang; +static char const *script_env[] = { "location=MUA", "phase=post", NULL }; static void add_file (struct mu_parseopt *po, struct mu_option *opt, char const *arg) @@ -390,7 +391,8 @@ main (int argc, char **argv) exit (1); } } - rc = mu_script_init (incdat.handler, script_file, &incdat.descr); + rc = mu_script_init (incdat.handler, script_file, script_env, + &incdat.descr); if (rc) { mu_error (_("script initialization failed: %s"), diff --git a/sieve/tests/Makefile.am b/sieve/tests/Makefile.am index 36a8be4..218d4ba 100644 --- a/sieve/tests/Makefile.am +++ b/sieve/tests/Makefile.am @@ -49,6 +49,7 @@ TESTSUITE_AT = \ compile.at\ enc-char.at\ envelope.at\ + environment.at\ exists.at\ ext.at\ false.at\ diff --git a/sieve/tests/size.at b/sieve/tests/environment.at similarity index 67% copy from sieve/tests/size.at copy to sieve/tests/environment.at index c204ea7..5168419 100644 --- a/sieve/tests/size.at +++ b/sieve/tests/environment.at @@ -1,5 +1,5 @@ # This file is part of GNU Mailutils. -*- Autotest -*- -# Copyright (C) 2007-2012, 2014-2016 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # # GNU Mailutils is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -14,28 +14,33 @@ # You should have received a copy of the GNU General Public License # along with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. -MUT_TESTCASE([size :under],[test size under size-under], -[ -if size :under 400 { - discard; -} -],[],[0],[], -[IMPLICIT KEEP on msg uid 1 -IMPLICIT KEEP on msg uid 2 -DISCARD on msg uid 3: marking as deleted -]) +AT_BANNER([environment]) + +m4_pushdef([MUT_SIEVE_OPTIONS],[--environment=location=MUA]) +MUT_TESTCASE([match],[environment match],[ +require "environment"; -MUT_TESTCASE([size :over],[test size over size-over], -[ -if size :over 500 { - discard; +if environment "location" "MUA" { + discard; } -],[],[0],[], +], +[],[0],[], [DISCARD on msg uid 1: marking as deleted DISCARD on msg uid 2: marking as deleted -IMPLICIT KEEP on msg uid 3 +DISCARD on msg uid 3: marking as deleted ]) +MUT_TESTCASE([no match], [environment unmatch],[ +require "environment"; - +if environment "location" "MTA" { + discard; +} +], +[],[0],[], +[IMPLICIT KEEP on msg uid 1 +IMPLICIT KEEP on msg uid 2 +IMPLICIT KEEP on msg uid 3 +]) +m4_popdef([MUT_SIEVE_OPTIONS]) diff --git a/sieve/tests/testsuite.at b/sieve/tests/testsuite.at index 748e06f..9e3a86e 100644 --- a/sieve/tests/testsuite.at +++ b/sieve/tests/testsuite.at @@ -150,3 +150,4 @@ m4_include([delheader.at]) m4_include([vacation.at]) m4_include([variables.at]) +m4_include([environment.at]) hooks/post-receive -- GNU Mailutils _______________________________________________ Commit-mailutils mailing list Commit-mailutils@gnu.org https://lists.gnu.org/mailman/listinfo/commit-mailutils