diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2002-11-08 15:54:31 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2002-11-08 15:54:31 +0000 |
commit | 8576c199ee2aef061f5d7501a002a9f22aad77ae (patch) | |
tree | 7f78f100343670b66bbdc245cad731ddbb4be7ac /libsieve | |
parent | 1b57a009e0473b03e5a66657a9a2ad444ee51c0d (diff) | |
download | mailutils-8576c199ee2aef061f5d7501a002a9f22aad77ae.tar.gz mailutils-8576c199ee2aef061f5d7501a002a9f22aad77ae.tar.bz2 |
(sieve_slist_destroy, sieve_value_create): New(sieve_slist_destroy, sieve_value_create): New functions.
Diffstat (limited to 'libsieve')
-rw-r--r-- | libsieve/util.c | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/libsieve/util.c b/libsieve/util.c index c432876a3..a75fb7bff 100644 --- a/libsieve/util.c +++ b/libsieve/util.c @@ -2,16 +2,16 @@ 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 General Public License as published by + 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 General Public License for more details. + GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + 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. */ @@ -35,3 +35,53 @@ sieve_alloc (size_t size) return p; } +void +sieve_slist_destroy (list_t *plist) +{ + iterator_t itr; + + if (!plist || iterator_create (&itr, *plist)) + return; + + for (iterator_first (itr); !iterator_is_done (itr); iterator_next (itr)) + { + char *s; + iterator_current (itr, (void **)&s); + free (s); + } + iterator_destroy (&itr); + list_destroy (plist); +} + +sieve_value_t * +sieve_value_create (sieve_data_type type, void *data) +{ + sieve_value_t *val = sieve_alloc (sizeof (*val)); + + val->type = type; + switch (type) + { + case SVT_NUMBER: + val->v.number = * (long *) data; + break; + + case SVT_STRING: + val->v.string = data; + break; + + case SVT_VALUE_LIST: + case SVT_STRING_LIST: + val->v.list = data; + + case SVT_TAG: + case SVT_IDENT: + val->v.string = data; + break; + + default: + sieve_error ("Invalid data type"); + abort (); + } + return val; +} + |