commit-mailutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Mailutils branch, master, updated. release-3.0-40-g506086e


From: Sergey Poznyakoff
Subject: [SCM] GNU Mailutils branch, master, updated. release-3.0-40-g506086e
Date: Mon, 12 Dec 2016 07:33:29 +0000 (UTC)

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 <address@hidden>
Date:   Mon Dec 12 09:31:31 2016 +0200

    Minor fix

commit 81750c9d313c09c0af1b5087bf2b0f584256d416
Author: Sergey Poznyakoff <address@hidden>
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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]