/* GNU mailutils - a suite of utilities for electronic mail Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include void sieve_require (list_t slist) { int status; iterator_t itr; status = iterator_create (&itr, slist); if (status) { sieve_compile_error (sieve_filename, sieve_line_num, "cannot create iterator: %s", mu_errstring (status)); return; } for (iterator_first (itr); !iterator_is_done (itr); iterator_next (itr)) { char *s; iterator_current (itr, (void **)&s); if (strncmp (s, "comparator-", 11) == 0) { if (sieve_require_comparator (s + 11)) { sieve_compile_error (sieve_filename, sieve_line_num, "source for the required comparator %s is not available", s + 11); } } else if (strncmp (s, "test-", 5) == 0) /* GNU extension */ { /* FIXME: test- requires are a GNU extension allowing to declare user-defined tests */ } else { sieve_register_t *reg; reg = sieve_action_lookup (s); if (!reg) { sieve_compile_error (sieve_filename, sieve_line_num, "source for the required action %s is not available", s); break; } reg->required = 1; } } iterator_destroy (&itr); }