summaryrefslogtreecommitdiff
path: root/libsieve/sieve.y
diff options
context:
space:
mode:
Diffstat (limited to 'libsieve/sieve.y')
-rw-r--r--libsieve/sieve.y53
1 files changed, 47 insertions, 6 deletions
diff --git a/libsieve/sieve.y b/libsieve/sieve.y
index c4919b93a..7ec7a9de1 100644
--- a/libsieve/sieve.y
+++ b/libsieve/sieve.y
@@ -361,39 +361,39 @@ sieve_machine_init (sieve_machine_t *pmach, void *data)
}
void
-sieve_machine_set_error (sieve_machine_t mach, sieve_printf_t error_printer)
+sieve_set_error (sieve_machine_t mach, sieve_printf_t error_printer)
{
mach->error_printer = error_printer ?
error_printer : _sieve_default_error_printer;
}
void
-sieve_machine_set_parse_error (sieve_machine_t mach, sieve_parse_error_t p)
+sieve_set_parse_error (sieve_machine_t mach, sieve_parse_error_t p)
{
mach->parse_error_printer = p ? p : _sieve_default_parse_error;
}
void
-sieve_machine_set_debug (sieve_machine_t mach, sieve_printf_t debug)
+sieve_set_debug (sieve_machine_t mach, sieve_printf_t debug)
{
mach->debug_printer = debug;
}
void
-sieve_machine_set_debug_level (sieve_machine_t mach, mu_debug_t dbg, int level)
+sieve_set_debug_level (sieve_machine_t mach, mu_debug_t dbg, int level)
{
mach->mu_debug = dbg;
mach->debug_level = level;
}
void
-sieve_machine_set_logger (sieve_machine_t mach, sieve_action_log_t logger)
+sieve_set_logger (sieve_machine_t mach, sieve_action_log_t logger)
{
mach->logger = logger;
}
void
-sieve_machine_set_ticket (sieve_machine_t mach, ticket_t ticket)
+sieve_set_ticket (sieve_machine_t mach, ticket_t ticket)
{
mach->ticket = ticket;
}
@@ -404,6 +404,46 @@ sieve_get_ticket (sieve_machine_t mach)
return mach->ticket;
}
+mailer_t
+sieve_get_mailer (sieve_machine_t mach)
+{
+ if (!mach->mailer)
+ mailer_create (&mach->mailer, NULL);
+ return mach->mailer;
+}
+
+void
+sieve_set_mailer (sieve_machine_t mach, mailer_t mailer)
+{
+ mailer_destroy (&mach->mailer);
+ mach->mailer = mailer;
+}
+
+#define MAILER_DAEMON_PFX "MAILER-DAEMON@"
+
+char *
+sieve_get_daemon_email (sieve_machine_t mach)
+{
+ if (!mach->daemon_email)
+ {
+ const char *domain = NULL;
+
+ mu_get_user_email_domain (&domain);
+ mach->daemon_email = sieve_palloc (&mach->memory_pool,
+ sizeof(MAILER_DAEMON_PFX) +
+ strlen (domain));
+ sprintf (mach->daemon_email, "%s%s", MAILER_DAEMON_PFX, domain);
+ }
+ return mach->daemon_email;
+}
+
+void
+sieve_set_daemon_email (sieve_machine_t mach, const char *email)
+{
+ sieve_pfree (&mach->memory_pool, (void *)mach->daemon_email);
+ mach->daemon_email = sieve_pstrdup (&mach->memory_pool, email);
+}
+
struct sieve_destr_record
{
sieve_destructor_t destr;
@@ -441,6 +481,7 @@ sieve_machine_destroy (sieve_machine_t *pmach)
list_do (mach->destr_list, _run_destructor, NULL);
list_destroy (&mach->destr_list);
sieve_slist_destroy (&mach->memory_pool);
+ mailer_destroy (&mach->mailer);
free (mach);
*pmach = NULL;
}

Return to:

Send suggestions and report system problems to the System administrator.