From fcaffaff15fdf11378dd38341bc8bd9eeebed17d Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Tue, 9 Apr 2019 18:31:50 +0200
Subject: [PATCH] lib-sieve: Replace sieve_sys_error() with e_error().

---
 .../plugins/ihave/ext-ihave-binary.c          | 14 ++---
 .../plugins/include/ext-include-binary.c      | 24 +++++----
 .../spamvirustest/ext-spamvirustest-common.c  | 24 +++++----
 .../plugins/variables/ext-variables-common.c  | 17 +++---
 src/lib-sieve/sieve-error.c                   | 54 ++++++++++---------
 src/lib-sieve/sieve-extensions.c              |  5 +-
 src/lib-sieve/sieve-message.c                 |  3 +-
 src/lib-sieve/sieve-script.c                  |  4 +-
 src/lib-sieve/sieve-storage.c                 | 19 +++----
 src/lib-sieve/sieve.c                         | 10 ++--
 src/lib-sieve/tst-size.c                      |  2 +-
 .../sieve-extprograms-common.c                | 33 +++++++-----
 src/testsuite/cmd-test-binary.c               |  7 +--
 src/testsuite/testsuite-mailstore.c           |  8 +--
 src/testsuite/testsuite-message.c             |  6 +--
 15 files changed, 125 insertions(+), 105 deletions(-)

diff --git a/src/lib-sieve/plugins/ihave/ext-ihave-binary.c b/src/lib-sieve/plugins/ihave/ext-ihave-binary.c
index e965ef53f..01b375efc 100644
--- a/src/lib-sieve/plugins/ihave/ext-ihave-binary.c
+++ b/src/lib-sieve/plugins/ihave/ext-ihave-binary.c
@@ -161,9 +161,10 @@ static bool ext_ihave_binary_open
 
 		/* Read number of missing extensions to read subsequently */
 		if ( !sieve_binary_read_unsigned(sblock, &offset, &count) ) {
-			sieve_sys_error(svinst,
-				"ihave: failed to read missing extension count "
-				"from block %d of binary %s", block_id, sieve_binary_path(sbin));
+			e_error(svinst->event, "ihave: "
+				"failed to read missing extension count "
+				"from block %d of binary %s",
+				block_id, sieve_binary_path(sbin));
 			return FALSE;
 		}
 
@@ -174,9 +175,10 @@ static bool ext_ihave_binary_open
 
 			if ( !sieve_binary_read_string(sblock, &offset, &ext_name) ) {
 				/* Binary is corrupt, recompile */
-				sieve_sys_error(svinst,
-					"ihave: failed to read missing extension name "
-					"from block %d of binary %s", block_id, sieve_binary_path(sbin));
+				e_error(svinst->event, "ihave: "
+					"failed to read missing extension name "
+					"from block %d of binary %s",
+					block_id, sieve_binary_path(sbin));
 				return FALSE;
 			}
 
diff --git a/src/lib-sieve/plugins/include/ext-include-binary.c b/src/lib-sieve/plugins/include/ext-include-binary.c
index 6a45583b8..966ba3a8c 100644
--- a/src/lib-sieve/plugins/include/ext-include-binary.c
+++ b/src/lib-sieve/plugins/include/ext-include-binary.c
@@ -257,7 +257,7 @@ static bool ext_include_binary_open
 	offset = 0;
 
 	if ( !sieve_binary_read_unsigned(sblock, &offset, &depcount) ) {
-		sieve_sys_error(svinst,
+		e_error(svinst->event,
 			"include: failed to read include count "
 			"for dependency block %d of binary %s", block_id,
 			sieve_binary_path(sbin));
@@ -266,7 +266,7 @@ static bool ext_include_binary_open
 
 	/* Check include limit */
 	if ( depcount > ext_ctx->max_includes ) {
-		sieve_sys_error(svinst,
+		e_error(svinst->event,
 			"include: binary %s includes too many scripts (%u > %u)",
 			sieve_binary_path(sbin), depcount, ext_ctx->max_includes);
 		return FALSE;
@@ -289,25 +289,26 @@ static bool ext_include_binary_open
 			!sieve_binary_read_string(sblock, &offset, &script_name) ||
 			!sieve_binary_read_byte(sblock, &offset, &flags) ) {
 			/* Binary is corrupt, recompile */
-			sieve_sys_error(svinst,
+			e_error(svinst->event,
 				"include: failed to read included script "
-				"from dependency block %d of binary %s", block_id,
-				sieve_binary_path(sbin));
+				"from dependency block %d of binary %s",
+				block_id, sieve_binary_path(sbin));
 			return FALSE;
 		}
 
 		if ( inc_block_id != 0 &&
 			(inc_block=sieve_binary_block_get(sbin, inc_block_id)) == NULL ) {
-			sieve_sys_error(svinst,
+			e_error(svinst->event,
 				"include: failed to find block %d for included script "
-				"from dependency block %d of binary %s", inc_block_id, block_id,
+				"from dependency block %d of binary %s",
+				inc_block_id, block_id,
 				sieve_binary_path(sbin));
 			return FALSE;
 		}
 
 		if ( location >= EXT_INCLUDE_LOCATION_INVALID ) {
 			/* Binary is corrupt, recompile */
-			sieve_sys_error(svinst,
+			e_error(svinst->event,
 				"include: dependency block %d of binary %s "
 				"uses invalid script location (id %d)",
 				block_id, sieve_binary_path(sbin), location);
@@ -363,10 +364,11 @@ static bool ext_include_binary_open
 		if ( (ret=sieve_script_binary_read_metadata
 			(script, sblock, &offset))	< 0 ) {
 			/* Binary is corrupt, recompile */
-			sieve_sys_error(svinst,
-				"include: dependency block %d of binary %s "
+			e_error(svinst->event, "include: "
+				"dependency block %d of binary %s "
 				"contains invalid script metadata for script %s",
-				block_id, sieve_binary_path(sbin), sieve_script_location(script));
+				block_id, sieve_binary_path(sbin),
+				sieve_script_location(script));
 			sieve_script_unref(&script);
 			return FALSE;
 		}
diff --git a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
index a435a4b80..b720c90c1 100644
--- a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
+++ b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c
@@ -301,8 +301,8 @@ bool ext_spamvirustest_load
 	} else if ( strcmp(status_type, "text") == 0 ) {
 		type = EXT_SPAMVIRUSTEST_STATUS_TYPE_TEXT;
 	} else {
-		sieve_sys_error(svinst,
-			"%s: invalid status type '%s'", ext_name, status_type);
+		e_error(svinst->event, "%s: "
+			"invalid status type '%s'", ext_name, status_type);
 		return FALSE;
 	}
 
@@ -345,9 +345,9 @@ bool ext_spamvirustest_load
 
 	if ( !ext_spamvirustest_header_spec_parse
 		(&ext_data->status_header, ext_data->pool, status_header, &error) ) {
-		sieve_sys_error(svinst,
-			"%s: invalid status header specification "
-			"'%s': %s", ext_name, status_header, error);
+		e_error(svinst->event, "%s: "
+			"invalid status header specification '%s': %s",
+			ext_name, status_header, error);
 		result = FALSE;
 	}
 
@@ -357,9 +357,10 @@ bool ext_spamvirustest_load
 
 			if ( max_header != NULL && !ext_spamvirustest_header_spec_parse
 				(&ext_data->max_header, ext_data->pool, max_header, &error) ) {
-				sieve_sys_error(svinst,
-					"%s: invalid max header specification "
-					"'%s': %s", ext_name, max_header, error);
+				e_error(svinst->event, "%s: "
+					"invalid max header specification "
+					"'%s': %s", ext_name, max_header,
+					error);
 				result = FALSE;
 			}
 
@@ -368,9 +369,10 @@ bool ext_spamvirustest_load
 			if ( result && max_value != NULL ) {
 				if ( !ext_spamvirustest_parse_decimal_value
 					(max_value, &ext_data->max_value, &error) ) {
-					sieve_sys_error(svinst,
-						"%s: invalid max value specification "
-						"'%s': %s", ext_name, max_value, error);
+					e_error(svinst->event, "%s: "
+						"invalid max value specification "
+						"'%s': %s", ext_name, max_value,
+						error);
 					result = FALSE;
 				}
 			}
diff --git a/src/lib-sieve/plugins/variables/ext-variables-common.c b/src/lib-sieve/plugins/variables/ext-variables-common.c
index 1d8b66a26..1de98bcdc 100644
--- a/src/lib-sieve/plugins/variables/ext-variables-common.c
+++ b/src/lib-sieve/plugins/variables/ext-variables-common.c
@@ -407,16 +407,16 @@ struct sieve_variable_scope_binary *sieve_variable_scope_binary_read
 
 	/* Read scope size */
 	if ( !sieve_binary_read_unsigned(sblock, address, &scope_size) ) {
-		sieve_sys_error
-			(svinst, "%s: variable scope: failed to read size", ext_name);
+		e_error(svinst->event, "%s: "
+			"variable scope: failed to read size", ext_name);
 		return NULL;
 	}
 
 	/* Check size limit */
 	max_scope_size = sieve_variables_get_max_scope_size(var_ext);
 	if ( scope_size > max_scope_size ) {
-		sieve_sys_error(svinst,
-			"%s: variable scope: size exceeds the limit (%u > %u)",
+		e_error(svinst->event, "%s: "
+			"variable scope: size exceeds the limit (%u > %u)",
 			ext_name, scope_size, max_scope_size );
 		return NULL;
 	}
@@ -424,8 +424,8 @@ struct sieve_variable_scope_binary *sieve_variable_scope_binary_read
 	/* Read offset */
 	pc = *address;
 	if ( !sieve_binary_read_offset(sblock, address, &end_offset) ) {
-		sieve_sys_error(svinst,
-			"%s: variable scope: failed to read end offset", ext_name);
+		e_error(svinst->event, "%s: "
+			"variable scope: failed to read end offset", ext_name);
 		return NULL;
 	}
 
@@ -460,8 +460,9 @@ struct sieve_variable_scope *sieve_variable_scope_binary_get
 			string_t *identifier;
 
 			if (!sieve_binary_read_string(scpbin->sblock, address, &identifier) ) {
-				sieve_sys_error(svinst,
-					"%s: variable scope: failed to read variable name", ext_name);
+				e_error(svinst->event, "%s: "
+					"variable scope: failed to read variable name",
+					ext_name);
 				return NULL;
 			}
 
diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index d55cbde9f..05cc141eb 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -1009,7 +1009,7 @@ sieve_logfile_vprintf(struct sieve_logfile_ehandler *ehandler,
 	} T_END;
 
 	if (ret < 0) {
-		sieve_sys_error(ehandler->handler.svinst,
+		e_error(ehandler->handler.svinst->event,
 			"o_stream_send() failed on logfile %s: %m",
 			ehandler->logfile);
 	}
@@ -1043,14 +1043,14 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 	fd = open(ehandler->logfile, O_CREAT | O_APPEND | O_WRONLY, 0600);
 	if (fd == -1) {
 		if (errno == EACCES) {
-			sieve_sys_error(svinst,
-				"failed to open logfile (LOGGING TO STDERR): "
-				"%s",
-				eacces_error_get_creating(
-					"open", ehandler->logfile));
+			e_error(svinst->event,
+				"failed to open logfile "
+				"(LOGGING TO STDERR): %s",
+				eacces_error_get_creating("open",
+							  ehandler->logfile));
 		} else {
-			sieve_sys_error(svinst,
-				"failed to open logfile (LOGGING TO STDERR): "
+			e_error(svinst->event, "failed to open logfile "
+				"(LOGGING TO STDERR): "
 				"open(%s) failed: %m", ehandler->logfile);
 		}
 		fd = STDERR_FILENO;
@@ -1059,12 +1059,12 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 
 		/* Stat the log file to obtain size information */
 		if (fstat(fd, &st) != 0) {
-			sieve_sys_error(svinst,
-				"failed to stat logfile (logging to STDERR): "
+			e_error(svinst->event, "failed to stat logfile "
+				"(logging to STDERR): "
 				"fstat(fd=%s) failed: %m", ehandler->logfile);
 
 			if (close(fd) < 0) {
-				sieve_sys_error(svinst,
+				e_error(svinst->event,
 					"failed to close logfile after error: "
 					"close(fd=%s) failed: %m",
 					ehandler->logfile);
@@ -1079,7 +1079,7 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 
 			/* Close open file */
 			if (close(fd) < 0) {
-				sieve_sys_error(svinst,
+				e_error(svinst->event,
 					"failed to close logfile: "
 					"close(fd=%s) failed: %m",
 					ehandler->logfile);
@@ -1087,15 +1087,18 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 
 			/* Rotate logfile */
 			rotated = t_strconcat(ehandler->logfile, ".0", NULL);
-			if (rename(ehandler->logfile, rotated) < 0 && errno != ENOENT) {
+			if (rename(ehandler->logfile, rotated) < 0 &&
+			    errno != ENOENT) {
 				if (errno == EACCES) {
-					sieve_sys_error(svinst,
+					const char *target =
+						t_strconcat(ehandler->logfile,
+							    ", ", rotated, NULL);
+					e_error(svinst->event,
 						"failed to rotate logfile: %s",
-						eacces_error_get_creating("rename",
-							t_strconcat(ehandler->logfile, ", ",
-								    rotated, NULL)));
+						eacces_error_get_creating(
+							"rename", target));
 				} else {
-					sieve_sys_error(svinst,
+					e_error(svinst->event,
 						"failed to rotate logfile: "
 						"rename(%s, %s) failed: %m",
 						ehandler->logfile, rotated);
@@ -1107,13 +1110,13 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 				O_CREAT | O_APPEND | O_WRONLY | O_TRUNC, 0600);
 			if (fd == -1) {
 				if (errno == EACCES) {
-					sieve_sys_error(svinst,
+					e_error(svinst->event,
 						"failed to open logfile "
 						"(LOGGING TO STDERR): %s",
 						eacces_error_get_creating(
 							"open", ehandler->logfile));
 				} else {
-					sieve_sys_error(svinst,
+					e_error(svinst->event,
 						"failed to open logfile "
 						"(LOGGING TO STDERR): "
 						"open(%s) failed: %m",
@@ -1127,7 +1130,7 @@ static void sieve_logfile_start(struct sieve_logfile_ehandler *ehandler)
 	ostream = o_stream_create_fd(fd, 0);
 	if (ostream == NULL) {
 		/* Can't we do anything else in this most awkward situation? */
-		sieve_sys_error(svinst,
+		e_error(svinst->event,
 			"failed to open log stream on open file: "
 			"o_stream_create_fd(fd=%s) failed "
 			"(non-critical messages are not logged!)",
@@ -1212,9 +1215,9 @@ static void sieve_logfile_free(struct sieve_error_handler *ehandler)
 
 	if (handler->stream != NULL) {
 		o_stream_destroy(&(handler->stream));
-		if (handler->fd != STDERR_FILENO){
+		if (handler->fd != STDERR_FILENO) {
 			if (close(handler->fd) < 0) {
-				sieve_sys_error(ehandler->svinst,
+				e_error(ehandler->svinst->event,
 					"failed to close logfile: "
 					"close(fd=%s) failed: %m",
 					handler->logfile);
@@ -1392,8 +1395,9 @@ _expand_message(struct sieve_error_handler *_ehandler, const char *location,
 		/* Log the error only once. This also prevents recursively
 		   looping back here. */
 		expand_error_logged = TRUE;
-		sieve_sys_error(_ehandler->svinst,
-			"Failed to expand error message: %s", error);
+		e_error(_ehandler->svinst->event,
+			"Failed to expand error message: %s",
+			error);
 	}
 
 	return str_c(str);
diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index 7071e171c..a734066dd 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -318,8 +318,9 @@ static bool _sieve_extension_load(struct sieve_extension *ext)
 	/* Call load handler */
 	if ( ext->def != NULL && ext->def->load != NULL &&
 		!ext->def->load(ext, &ext->context) ) {
-		sieve_sys_error(ext->svinst,
-			"failed to load '%s' extension support.", ext->def->name);
+		e_error(ext->svinst->event,
+			"failed to load '%s' extension support.",
+			ext->def->name);
 		return FALSE;
 	}
 
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index a920db2b4..62f4a64c8 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -352,7 +352,8 @@ int sieve_message_substitute
 		smtp_address_encode(sender), &box);
 
 	if ( ret < 0 ) {
-		sieve_sys_error(msgctx->svinst, "can't open substituted mail as raw: %s",
+		e_error(msgctx->svinst->event,
+			"can't open substituted mail as raw: %s",
 			mailbox_get_last_error(box, NULL));
 		return -1;
 	}
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 6abd8086f..7f2547572 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -749,7 +749,7 @@ void sieve_script_set_critical(struct sieve_script *script,
 	if (fmt != NULL) {
 		if ((storage->flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) == 0) {
 			va_start(va, fmt);
-			sieve_sys_error(storage->svinst, "%s script: %s",
+			e_error(storage->svinst->event, "%s script: %s",
 				storage->driver_name, t_strdup_vprintf(fmt, va));
 			va_end(va);
 
@@ -789,7 +789,7 @@ void sieve_script_sys_error(struct sieve_script *script, const char *fmt, ...)
 	va_list va;
 
 	va_start(va, fmt);
-	sieve_sys_error(svinst, "%s script: %s",
+	e_error(svinst->event, "%s script: %s",
 		script->driver_name, t_strdup_vprintf(fmt, va));
 	va_end(va);
 }
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 6129eab29..c5e9e06ca 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -151,11 +151,11 @@ sieve_storage_driver_parse(struct sieve_instance *svinst, const char **data,
 
 		storage_class = sieve_storage_find_class(svinst, driver);
 		if (storage_class == NULL) {
-			sieve_sys_error(svinst,
+			e_error(svinst->event,
 				"Unknown storage driver module `%s'",
 				driver);
 		} else if (storage_class->v.alloc == NULL) {
-			sieve_sys_error(svinst,
+			e_error(svinst->event,
 				"Support not compiled in for storage driver `%s'",
 				driver);
 			storage_class = NULL;
@@ -322,7 +322,7 @@ sieve_storage_init(struct sieve_instance *svinst,
 
 	if ((flags & SIEVE_STORAGE_FLAG_READWRITE) != 0 &&
 	    storage_class->v.save_init == NULL) {
-		sieve_sys_error(svinst, "%s storage: "
+		e_error(svinst->event, "%s storage: "
 			"Storage does not support write access",
 			storage_class->driver_name);
 		*error_r = SIEVE_ERROR_TEMP_FAILURE;
@@ -458,7 +458,7 @@ sieve_storage_do_create_main(struct sieve_instance *svinst,
 			}
 
 			if (ret > 0 && sieve_dir_class != &sieve_file_storage) {
-				sieve_sys_error(svinst, "storage: "
+				e_error(svinst->event, "storage: "
 					"Cannot use deprecated sieve_dir= setting "
 					"with `%s' driver for main Sieve storage",
 					sieve_dir_class->driver_name);
@@ -597,13 +597,13 @@ sieve_storage_create_main(struct sieve_instance *svinst, struct mail_user *user,
 					}
 					break;
 				case SIEVE_ERROR_TEMP_FAILURE:
-					sieve_sys_error(svinst, "storage: "
+					e_error(svinst->event, "storage: "
 						"Failed to access default script location `%s' "
 						"(temporary failure)",
 						set_default);
 					break;
 				default:
-					sieve_sys_error(svinst, "storage: "
+					e_error(svinst->event, "storage: "
 						"Failed to access default script location `%s'",
 						set_default);
 					break;
@@ -1401,8 +1401,9 @@ void sieve_storage_set_critical(struct sieve_storage *storage,
 	if (fmt != NULL) {
 		if ((storage->flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) == 0) {
 			va_start(va, fmt);
-			sieve_sys_error(storage->svinst, "%s storage: %s",
-				storage->driver_name, t_strdup_vprintf(fmt, va));
+			e_error(storage->svinst->event, "%s storage: %s",
+				storage->driver_name,
+				t_strdup_vprintf(fmt, va));
 			va_end(va);
 
 			sieve_storage_set_internal_error(storage);
@@ -1443,7 +1444,7 @@ void sieve_storage_sys_error(struct sieve_storage *storage,
 	va_list va;
 
 	va_start(va, fmt);
-	sieve_sys_error(svinst, "%s storage: %s",
+	e_error(svinst->event, "%s storage: %s",
 		storage->driver_name, t_strdup_vprintf(fmt, va));
 	va_end(va);
 }
diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index b206a7358..e76eecb59 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -950,8 +950,8 @@ int sieve_trace_log_create(struct sieve_instance *svinst, const char *path,
 	else {
 		fd = open(path, O_CREAT | O_APPEND | O_WRONLY, 0600);
 		if (fd == -1) {
-			sieve_sys_error(svinst, "trace: "
-					"creat(%s) failed: %m", path);
+			e_error(svinst->event, "trace: "
+				"creat(%s) failed: %m", path);
 			return -1;
 		}
 		output = o_stream_create_fd_autoclose(&fd, 0);
@@ -977,8 +977,8 @@ int sieve_trace_log_create_dir(struct sieve_instance *svinst, const char *dir,
 
 	if (stat(dir, &st) < 0) {
 		if (errno != ENOENT && errno != EACCES) {
-			sieve_sys_error(svinst, "trace: "
-					"stat(%s) failed: %m", dir);
+			e_error(svinst->event, "trace: "
+				"stat(%s) failed: %m", dir);
 		}
 		return -1;
 	}
@@ -1077,7 +1077,7 @@ int sieve_trace_config_get(struct sieve_instance *svinst,
 	else if (strcasecmp(tr_level, "matching") == 0)
 		tr_config->level = SIEVE_TRLVL_MATCHING;
 	else {
-		sieve_sys_error(svinst, "Unknown trace level: %s", tr_level);
+		e_error(svinst->event, "Unknown trace level: %s", tr_level);
 		return -1;
 	}
 
diff --git a/src/lib-sieve/tst-size.c b/src/lib-sieve/tst-size.c
index 726b3318e..68169cd0a 100644
--- a/src/lib-sieve/tst-size.c
+++ b/src/lib-sieve/tst-size.c
@@ -262,7 +262,7 @@ static int tst_size_operation_execute
 	/* Get the size of the message */
 	if ( !tst_size_get(renv, &mail_size) ) {
 		/* FIXME: improve this error */
-		sieve_sys_error(renv->svinst, "failed to assess message size");
+		e_error(renv->svinst->event, "failed to assess message size");
 		return SIEVE_EXEC_FAILURE;
 	}
 
diff --git a/src/plugins/sieve-extprograms/sieve-extprograms-common.c b/src/plugins/sieve-extprograms/sieve-extprograms-common.c
index a47447713..82d8a387b 100644
--- a/src/plugins/sieve-extprograms/sieve-extprograms-common.c
+++ b/src/plugins/sieve-extprograms/sieve-extprograms-common.c
@@ -429,9 +429,10 @@ struct sieve_extprogram *sieve_extprogram_create
 
 	if ( ext_config == NULL ||
 		(ext_config->bin_dir == NULL && ext_config->socket_dir == NULL) ) {
-		sieve_sys_error(svinst, "action %s: "
+		e_error(svinst->event, "action %s: "
 			"failed to execute program `%s': "
-			"vnd.dovecot.%s extension is unconfigured", action, program_name, action);
+			"vnd.dovecot.%s extension is unconfigured",
+			action, program_name, action);
 		*error_r = SIEVE_ERROR_NOT_FOUND;
 		return NULL;
 	}
@@ -450,19 +451,21 @@ struct sieve_extprogram *sieve_extprogram_create
 				}
 				break;
 			case EACCES:
-				sieve_sys_error(svinst, "action %s: "
-					"failed to stat socket: %s", action, eacces_error_get("stat", path));
+				e_error(svinst->event, "action %s: "
+					"failed to stat socket: %s",
+					action, eacces_error_get("stat", path));
 				*error_r = SIEVE_ERROR_NO_PERMISSION;
 				return NULL;
 			default:
-				sieve_sys_error(svinst, "action %s: "
-					"failed to stat socket `%s': %m", action, path);
+				e_error(svinst->event, "action %s: "
+					"failed to stat socket `%s': %m",
+					action, path);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				return NULL;
 			}
 			path = NULL;
 		} else if ( !S_ISSOCK(st.st_mode) ) {
-			sieve_sys_error(svinst, "action %s: "
+			e_error(svinst->event, "action %s: "
 				"socket path `%s' for program `%s' is not a socket",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NOT_POSSIBLE;
@@ -485,26 +488,28 @@ struct sieve_extprogram *sieve_extprogram_create
 				*error_r = SIEVE_ERROR_NOT_FOUND;
 				break;
 			case EACCES:
-				sieve_sys_error(svinst, "action %s: "
-					"failed to stat program: %s", action, eacces_error_get("stat", path));
+				e_error(svinst->event, "action %s: "
+					"failed to stat program: %s",
+					action, eacces_error_get("stat", path));
 				*error_r = SIEVE_ERROR_NO_PERMISSION;
 				break;
 			default:
-				sieve_sys_error(svinst, "action %s: "
-					"failed to stat program `%s': %m", action, path);
+				e_error(svinst->event, "action %s: "
+					"failed to stat program `%s': %m",
+					action, path);
 				*error_r = SIEVE_ERROR_TEMP_FAILURE;
 				break;
 			}
 
 			return NULL;
 		} else if ( !S_ISREG(st.st_mode) ) {
-			sieve_sys_error(svinst, "action %s: "
+			e_error(svinst->event, "action %s: "
 				"executable `%s' for program `%s' is not a regular file",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NOT_POSSIBLE;
 			return NULL;
 		} else if ( (st.st_mode & S_IWOTH) != 0 ) {
-			sieve_sys_error(svinst, "action %s: "
+			e_error(svinst->event, "action %s: "
 				"executable `%s' for program `%s' is world-writable",
 				action, path, program_name);
 			*error_r = SIEVE_ERROR_NO_PERMISSION;
@@ -514,7 +519,7 @@ struct sieve_extprogram *sieve_extprogram_create
 
 	/* None found ? */
 	if ( path == NULL ) {
-		sieve_sys_error(svinst, "action %s: "
+		e_error(svinst->event, "action %s: "
 			"program `%s' not found", action, program_name);
 		*error_r = SIEVE_ERROR_NOT_FOUND;
 		return NULL;
diff --git a/src/testsuite/cmd-test-binary.c b/src/testsuite/cmd-test-binary.c
index c4531c027..6f810bd22 100644
--- a/src/testsuite/cmd-test-binary.c
+++ b/src/testsuite/cmd-test-binary.c
@@ -178,7 +178,7 @@ static int cmd_test_binary_operation_execute
 
 			sieve_binary_unref(&sbin);
 		} else {
-			sieve_sys_error(testsuite_sieve_instance,
+			e_error(testsuite_sieve_instance->event,
 				"failed to load binary %s", str_c(binary_name));
 			return SIEVE_EXEC_FAILURE;
 		}
@@ -195,8 +195,9 @@ static int cmd_test_binary_operation_execute
 		if ( sbin != NULL )
 			testsuite_binary_save(sbin, str_c(binary_name));
 		else {
-			sieve_sys_error(testsuite_sieve_instance,
-				"no compiled binary to save as %s", str_c(binary_name));
+			e_error(testsuite_sieve_instance->event,
+				"no compiled binary to save as %s",
+				str_c(binary_name));
 			return SIEVE_EXEC_FAILURE;
 		}
 	} else {
diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c
index b02085305..5bc414dba 100644
--- a/src/testsuite/testsuite-mailstore.c
+++ b/src/testsuite/testsuite-mailstore.c
@@ -193,7 +193,7 @@ static struct mail *testsuite_mailstore_open(const char *folder)
 
 	box = mailbox_alloc(ns->list, folder, flags);
 	if ( mailbox_open(box) < 0 ) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: failed to open mailbox '%s'", folder);
 		mailbox_free(&box);
 		return NULL;
@@ -202,7 +202,7 @@ static struct mail *testsuite_mailstore_open(const char *folder)
 	/* Sync mailbox */
 
 	if ( mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ) < 0 ) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: failed to sync mailbox '%s'", folder);
 		mailbox_free(&box);
 		return NULL;
@@ -249,7 +249,7 @@ int testsuite_mailstore_set_imap_metadata
 	int ret;
 
 	if ( !imap_metadata_verify_entry_name(annotation, &error) ) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: imap metadata: "
 			"specified annotation name `%s' is invalid: %s",
 			str_sanitize(annotation, 256), error);
@@ -282,7 +282,7 @@ int testsuite_mailstore_set_imap_metadata
 		mailbox_free(&box);
 
 	if ( ret < 0 ) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: imap metadata: "
 			"failed to assign annotation `%s': %s",
 			str_sanitize(annotation, 256), error);
diff --git a/src/testsuite/testsuite-message.c b/src/testsuite/testsuite-message.c
index 419c275b2..e1e8fcc4d 100644
--- a/src/testsuite/testsuite-message.c
+++ b/src/testsuite/testsuite-message.c
@@ -178,7 +178,7 @@ void testsuite_envelope_set_sender
 		SMTP_ADDRESS_PARSE_FLAG_ALLOW_EMPTY |
 		SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL,
 		&address, &error) < 0) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope sender address "
 			"`%s' is invalid: %s", value, error);
 	}
@@ -210,7 +210,7 @@ void testsuite_envelope_set_recipient
 		SMTP_ADDRESS_PARSE_FLAG_ALLOW_LOCALPART |
 		SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL,
 		&address, &error) < 0) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope recipient address "
 			"`%s' is invalid: %s", value, error);
 	}
@@ -239,7 +239,7 @@ void testsuite_envelope_set_orig_recipient
 		SMTP_ADDRESS_PARSE_FLAG_ALLOW_LOCALPART |
 		SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL,
 		&address, &error) < 0) {
-		sieve_sys_error(testsuite_sieve_instance,
+		e_error(testsuite_sieve_instance->event,
 			"testsuite: envelope recipient address "
 			"`%s' is invalid: %s", value, error);
 	}
-- 
GitLab