summaryrefslogtreecommitdiffabout
authorSergey Poznyakoff <gray@gnu.org.ua>2002-11-08 15:54:31 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2002-11-08 15:54:31 (GMT)
commit8576c199ee2aef061f5d7501a002a9f22aad77ae (patch) (side-by-side diff)
tree7f78f100343670b66bbdc245cad731ddbb4be7ac
parent1b57a009e0473b03e5a66657a9a2ad444ee51c0d (diff)
downloadmailutils-8576c199ee2aef061f5d7501a002a9f22aad77ae.tar.gz
mailutils-8576c199ee2aef061f5d7501a002a9f22aad77ae.tar.bz2
(sieve_slist_destroy, sieve_value_create): New(sieve_slist_destroy, sieve_value_create): New functions.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libsieve/util.c56
1 files changed, 53 insertions, 3 deletions
diff --git a/libsieve/util.c b/libsieve/util.c
index c432876..a75fb7b 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;
+}
+

Return to:

Send suggestions and report system problems to the System administrator.