diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-11-29 18:40:58 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-11-29 18:40:58 +0200 |
commit | 1186b695bc7c105b19e36bff4c7c9dc04fe30d8f (patch) | |
tree | 91a09af7ad23205284e4d996fe5340c2a7b69922 /include/mailutils | |
parent | 7b6fe2abc7d5352f14aa54d50f8bc41660ea32dc (diff) | |
download | mailutils-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.h | 28 |
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 */ |