summaryrefslogtreecommitdiff
path: root/include/mailutils
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-11-29 18:40:58 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-11-29 18:40:58 +0200
commit1186b695bc7c105b19e36bff4c7c9dc04fe30d8f (patch)
tree91a09af7ad23205284e4d996fe5340c2a7b69922 /include/mailutils
parent7b6fe2abc7d5352f14aa54d50f8bc41660ea32dc (diff)
downloadmailutils-1186b695bc7c105b19e36bff4c7c9dc04fe30d8f.tar.gz
mailutils-1186b695bc7c105b19e36bff4c7c9dc04fe30d8f.tar.bz2
sieve: improve memory allocation
* include/mailutils/sieve.h (mu_sieve_alloc) (mu_sieve_palloc,mu_sieve_prealloc) (mu_sieve_pfree,mu_sieve_pstrdup): Remove. (mu_sieve_mstrdup,mu_sieve_mrealloc) (mu_sieve_mfree): Remove. (mu_sieve_reclaim_t): New typedef. (mu_sieve_calloc,mu_sieve_strdup) (mu_sieve_realloc) (mu_sieve_reclaim_default,mu_sieve_reclaim_list) (mu_sieve_reclaim_value,mu_sieve_reclaim_tag): New functions (mu_sieve_value_create): Change prototype (take mu_sieve_machine_t as first argument) * libmu_sieve/mem.c: New file. * libmu_sieve/Makefile.am: Add new file. * libmu_sieve/comparator.c: Use new allocation functions. * libmu_sieve/prog.c: Likewise. * libmu_sieve/register.c: Likewise. * libmu_sieve/sieve.l: Likewise. * libmu_sieve/sieve.y: Likewise. * libmu_sieve/util.c: Likewise. * doc/texinfo/libmu_sieve.texi: Update (needs revision).
Diffstat (limited to 'include/mailutils')
-rw-r--r--include/mailutils/sieve.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/include/mailutils/sieve.h b/include/mailutils/sieve.h
index 8a89ca494..20ad24eec 100644
--- a/include/mailutils/sieve.h
+++ b/include/mailutils/sieve.h
@@ -121,18 +121,24 @@ extern mu_list_t mu_sieve_library_path_prefix;
void mu_sieve_debug_init (void);
/* Memory allocation functions */
-void *mu_sieve_alloc (size_t size);
-void *mu_sieve_palloc (mu_list_t *pool, size_t size);
-void *mu_sieve_prealloc (mu_list_t *pool, void *ptr, size_t size);
-void mu_sieve_pfree (mu_list_t *pool, void *ptr);
-char *mu_sieve_pstrdup (mu_list_t *pool, const char *str);
-
+typedef void (*mu_sieve_reclaim_t) (void *);
+void mu_sieve_register_memory (mu_sieve_machine_t mach, void *ptr,
+ mu_sieve_reclaim_t reclaim);
+void *mu_sieve_alloc_memory (mu_sieve_machine_t mach, size_t size,
+ mu_sieve_reclaim_t recfun);
+void mu_sieve_free (mu_sieve_machine_t mach, void *ptr);
void *mu_sieve_malloc (mu_sieve_machine_t mach, size_t size);
-char *mu_sieve_mstrdup (mu_sieve_machine_t mach, const char *str);
-void *mu_sieve_mrealloc (mu_sieve_machine_t mach, void *ptr, size_t size);
-void mu_sieve_mfree (mu_sieve_machine_t mach, void *ptr);
-
-mu_sieve_value_t *mu_sieve_value_create (mu_sieve_data_type type, void *data);
+void *mu_sieve_calloc (mu_sieve_machine_t mach, size_t nmemb, size_t size);
+char *mu_sieve_strdup (mu_sieve_machine_t mach, char const *str);
+void *mu_sieve_realloc (mu_sieve_machine_t mach, void *ptr, size_t size);
+
+void mu_sieve_reclaim_default (void *p);
+void mu_sieve_reclaim_list (void *p);
+void mu_sieve_reclaim_value (void *p);
+void mu_sieve_reclaim_tag (void *p);
+
+mu_sieve_value_t *mu_sieve_value_create (mu_sieve_machine_t mach,
+ mu_sieve_data_type type, void *data);
void mu_sieve_slist_destroy (mu_list_t *plist);
/* Symbol space functions */

Return to:

Send suggestions and report system problems to the System administrator.