Commit fd040416 fd04041628827f09e0b0c57e41491346357760e1 by Sergey Poznyakoff

Version 3.1

* configure.ac: version 3.1
* NEWS: Likewise.

* libmu_sieve/comparator.c: Attend to FIXMEs.
* libmu_sieve/conf.c: Likewise.
* libmu_sieve/prog.c: Likewise.
* libmu_sieve/runtime.c: Likewise.
* libmu_sieve/sieve.y: Likewise.
* libmu_sieve/util.c: Likewise.
* libmu_sieve/variables.c: Likewise.

* po/POTFILES.in: Add new files.
1 parent 985be0a2
...@@ -5,7 +5,7 @@ See the end of file for copying conditions. ...@@ -5,7 +5,7 @@ See the end of file for copying conditions.
5 Please send mailutils bug reports to <bug-mailutils@gnu.org>. 5 Please send mailutils bug reports to <bug-mailutils@gnu.org>.
6 6
7 7
8 Version 3.0.90 (Git) 8 Version 3.1 - 2016-12-13
9 9
10 * Sieve 10 * Sieve
11 11
...@@ -16,8 +16,8 @@ are implemented: ...@@ -16,8 +16,8 @@ are implemented:
16 variables - RFC 5229 16 variables - RFC 5229
17 environment - RFC 5183 17 environment - RFC 5183
18 18
19 The tools define the Sieve environment "location", and 19 The utilities define the Sieve environment "location", and
20 "phase" as follows: 20 "phase" as per the following table:
21 21
22 Utility | "location" | "phase" 22 Utility | "location" | "phase"
23 --------+-------------+-------- 23 --------+-------------+--------
......
...@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU General Public License along ...@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU General Public License along
16 dnl with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>. 16 dnl with GNU Mailutils. If not, see <http://www.gnu.org/licenses/>.
17 17
18 AC_PREREQ(2.63) 18 AC_PREREQ(2.63)
19 AC_INIT([GNU Mailutils], [3.0.90], [bug-mailutils@gnu.org], [mailutils], 19 AC_INIT([GNU Mailutils], [3.1], [bug-mailutils@gnu.org], [mailutils],
20 [http://mailutils.org]) 20 [http://mailutils.org])
21 AC_CONFIG_SRCDIR([libmailutils/mailbox/mailbox.c]) 21 AC_CONFIG_SRCDIR([libmailutils/mailbox/mailbox.c])
22 AC_CONFIG_AUX_DIR([build-aux]) 22 AC_CONFIG_AUX_DIR([build-aux])
...@@ -32,7 +32,7 @@ AB_INIT ...@@ -32,7 +32,7 @@ AB_INIT
32 32
33 dnl Library versioning 33 dnl Library versioning
34 AC_SUBST(VI_CURRENT, 5) 34 AC_SUBST(VI_CURRENT, 5)
35 AC_SUBST(VI_REVISION, 0) 35 AC_SUBST(VI_REVISION, 1)
36 AC_SUBST(VI_AGE, 0) 36 AC_SUBST(VI_AGE, 0)
37 37
38 dnl Library paths 38 dnl Library paths
......
...@@ -266,7 +266,10 @@ mu_sieve_match_part_checker (mu_sieve_machine_t mach) ...@@ -266,7 +266,10 @@ mu_sieve_match_part_checker (mu_sieve_machine_t mach)
266 } 266 }
267 } 267 }
268 else 268 else
269 abort ();//FIXME 269 {
270 mu_error (_("%s:%d: INTERNAL ERROR, please report"), __FILE__, __LINE__);
271 abort ();
272 }
270 273
271 if (!compfun) 274 if (!compfun)
272 { 275 {
...@@ -400,7 +403,7 @@ i_ascii_numeric_is (mu_sieve_machine_t mach, ...@@ -400,7 +403,7 @@ i_ascii_numeric_is (mu_sieve_machine_t mach,
400 if (mu_isdigit (*str)) 403 if (mu_isdigit (*str))
401 { 404 {
402 if (mu_isdigit (*text)) 405 if (mu_isdigit (*text))
403 //FIXME: Error checking 406 /* FIXME: Error checking */
404 return strtol (str, NULL, 10) == strtol (text, NULL, 10); 407 return strtol (str, NULL, 10) == strtol (text, NULL, 10);
405 else 408 else
406 return 0; 409 return 0;
......
...@@ -45,7 +45,6 @@ struct sieve_settings ...@@ -45,7 +45,6 @@ struct sieve_settings
45 }; 45 };
46 static struct sieve_settings sieve_settings; 46 static struct sieve_settings sieve_settings;
47 47
48 /*FIXME: REMOVE BEGIN */
49 static int 48 static int
50 _path_append (void *item, void *data) 49 _path_append (void *item, void *data)
51 { 50 {
......
...@@ -148,7 +148,7 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach, ...@@ -148,7 +148,7 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach,
148 148
149 exp_arg = reg->v.command.req_args ? reg->v.command.req_args : empty; 149 exp_arg = reg->v.command.req_args ? reg->v.command.req_args : empty;
150 150
151 /* Pass 1: consolidation */ 151 /* Pass 1: tag consolidation and argument checking */
152 for (i = 0; i < node->v.command.argcount; i++) 152 for (i = 0; i < node->v.command.argcount; i++)
153 { 153 {
154 mu_sieve_value_t *val = start + i; 154 mu_sieve_value_t *val = start + i;
...@@ -223,9 +223,19 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach, ...@@ -223,9 +223,19 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach,
223 err = 1; 223 err = 1;
224 break; 224 break;
225 } 225 }
226 //FIXME
227 if (mu_list_foreach (chk_list, _compare_ptr, cf) == 0) 226 if (mu_list_foreach (chk_list, _compare_ptr, cf) == 0)
228 mu_list_append (chk_list, cf); 227 {
228 rc = mu_list_append (chk_list, cf);
229 if (rc)
230 {
231 mu_diag_at_locus (MU_LOG_ERROR, &mach->locus,
232 "mu_list_append: %s",
233 mu_strerror (rc));
234 mu_i_sv_error (mach);
235 err = 1;
236 break;
237 }
238 }
229 } 239 }
230 } 240 }
231 else 241 else
...@@ -288,19 +298,19 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach, ...@@ -288,19 +298,19 @@ mu_i_sv_lint_command (struct mu_sieve_machine *mach,
288 298
289 if (node->v.command.tagcount) 299 if (node->v.command.tagcount)
290 { 300 {
291 /* Move tags to the end of the list */ 301 /* Pass 2: Move tags to the end of the list */
292 for (i = 1; i < node->v.command.argcount; i++) 302 for (i = 1; i < node->v.command.argcount; i++)
293 { 303 {
294 int j;//FIXME 304 size_t j;
295 mu_sieve_value_t tmp = start[i]; 305 mu_sieve_value_t tmp = start[i];
296 for (j = i - 1; j >= 0; j--) 306 for (j = i; j > 0; j--)
297 { 307 {
298 if (!tmp.tag && start[j].tag) 308 if (!tmp.tag && start[j - 1].tag)
299 start[j + 1] = start[j]; 309 start[j] = start[j - 1];
300 else 310 else
301 break; 311 break;
302 } 312 }
303 start[j + 1] = tmp; 313 start[j] = tmp;
304 } 314 }
305 } 315 }
306 316
......
...@@ -228,7 +228,7 @@ int ...@@ -228,7 +228,7 @@ int
228 mu_sieve_set_dry_run (mu_sieve_machine_t mach, int val) 228 mu_sieve_set_dry_run (mu_sieve_machine_t mach, int val)
229 { 229 {
230 if (mach->state != mu_sieve_state_compiled) 230 if (mach->state != mu_sieve_state_compiled)
231 return EINVAL; //FIXME: another error code 231 return EINVAL; /* FIXME: another error code */
232 return mach->dry_run = val; 232 return mach->dry_run = val;
233 } 233 }
234 234
......
...@@ -1007,10 +1007,8 @@ mu_i_sv_free_stringspace (mu_sieve_machine_t mach) ...@@ -1007,10 +1007,8 @@ mu_i_sv_free_stringspace (mu_sieve_machine_t mach)
1007 regex_t *rx = mach->stringspace[i].rx; 1007 regex_t *rx = mach->stringspace[i].rx;
1008 regfree (rx); 1008 regfree (rx);
1009 } 1009 }
1010 /* FIXME: Is it needed? 1010 /* There's no need to free mach->stringspace[i].exp, because
1011 if (mach->stringspace[i].exp) 1011 it is allocated in mach's memory pool */
1012 free (mach->stringspace[i].exp);
1013 */
1014 } 1012 }
1015 } 1013 }
1016 1014
...@@ -1575,7 +1573,6 @@ sieve_compile_strbuf (void *name) ...@@ -1575,7 +1573,6 @@ sieve_compile_strbuf (void *name)
1575 return MU_ERR_FAILURE; 1573 return MU_ERR_FAILURE;
1576 } 1574 }
1577 1575
1578 //FIXME: The API is clumsy
1579 int 1576 int
1580 mu_sieve_compile_buffer (mu_sieve_machine_t mach, 1577 mu_sieve_compile_buffer (mu_sieve_machine_t mach,
1581 const char *str, int strsize, 1578 const char *str, int strsize,
......
...@@ -81,7 +81,6 @@ mu_sieve_get_arg_untyped (mu_sieve_machine_t mach, size_t index) ...@@ -81,7 +81,6 @@ mu_sieve_get_arg_untyped (mu_sieve_machine_t mach, size_t index)
81 mach->tagcount, 81 mach->tagcount,
82 index); 82 index);
83 abort (); 83 abort ();
84 //FIXME mu_sieve_abort (mach);
85 } 84 }
86 85
87 return mach->valspace + mach->argstart + index; 86 return mach->valspace + mach->argstart + index;
......
...@@ -156,7 +156,7 @@ findprec (char const *name) ...@@ -156,7 +156,7 @@ findprec (char const *name)
156 for (i = 0; i < MU_ARRAY_SIZE (modprec); i++) 156 for (i = 0; i < MU_ARRAY_SIZE (modprec); i++)
157 if (strcmp (modprec[i].name, name) == 0) 157 if (strcmp (modprec[i].name, name) == 0)
158 return &modprec[i]; 158 return &modprec[i];
159 mu_error ("%s:%d: INTERNAL ERROR", __FILE__, __LINE__); 159 mu_error (_("%s:%d: INTERNAL ERROR, please report"), __FILE__, __LINE__);
160 abort (); 160 abort ();
161 } 161 }
162 162
......
...@@ -38,6 +38,7 @@ libmu_auth/tls.c ...@@ -38,6 +38,7 @@ libmu_auth/tls.c
38 libmu_sieve/actions.c 38 libmu_sieve/actions.c
39 libmu_sieve/comparator.c 39 libmu_sieve/comparator.c
40 libmu_sieve/conf.c 40 libmu_sieve/conf.c
41 libmu_sieve/mem.c
41 libmu_sieve/prog.c 42 libmu_sieve/prog.c
42 libmu_sieve/relational.c 43 libmu_sieve/relational.c
43 libmu_sieve/require.c 44 libmu_sieve/require.c
...@@ -46,6 +47,7 @@ libmu_sieve/sieve.l ...@@ -46,6 +47,7 @@ libmu_sieve/sieve.l
46 libmu_sieve/sieve.y 47 libmu_sieve/sieve.y
47 libmu_sieve/tests.c 48 libmu_sieve/tests.c
48 libmu_sieve/util.c 49 libmu_sieve/util.c
50 libmu_sieve/variables.c
49 51
50 libmu_sieve/extensions/list.c 52 libmu_sieve/extensions/list.c
51 libmu_sieve/extensions/moderator.c 53 libmu_sieve/extensions/moderator.c
......