From 5f508971d200205040564130078b5632743d02a7 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@dovecot.fi>
Date: Wed, 24 Apr 2019 19:06:58 +0200
Subject: [PATCH] lib-sieve: sieve-error - Move logging to master log to a
 separate function.

---
 src/lib-sieve/sieve-error.c | 70 +++++++++++++++++++++----------------
 1 file changed, 39 insertions(+), 31 deletions(-)

diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index 70683cc87..3a8e7c295 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -72,6 +72,43 @@ void sieve_errors_deinit(struct sieve_instance *svinst)
  * Direct handler calls
  */
 
+typedef void (*master_log_func_t)(const char *fmt, ...) ATTR_FORMAT(1, 2);
+
+static void ATTR_FORMAT(3, 0)
+sieve_direct_master_vlog(struct sieve_instance *svinst ATTR_UNUSED,
+			 const struct sieve_error_params *params,
+			 const char *fmt, va_list args)
+{
+	master_log_func_t log_func;
+	string_t *str;
+
+	switch (params->log_type) {
+	case LOG_TYPE_ERROR:
+		log_func = i_error;
+		break;
+	case LOG_TYPE_WARNING:
+		log_func = i_warning;
+		break;
+	case LOG_TYPE_INFO:
+		log_func = i_info;
+		break;
+	case LOG_TYPE_DEBUG:
+		log_func = i_debug;
+		break;
+	default:
+		i_unreached();
+	}
+
+	str = t_str_new(256);
+	str_append(str, "sieve: ");
+
+	if (params->location != NULL && *params->location != '\0')
+		str_printfa(str, "%s: ", params->location);
+	str_vprintfa(str, fmt, args);
+
+	log_func("%s", str_c(str));
+}
+
 void sieve_direct_logv(struct sieve_instance *svinst,
 		       struct sieve_error_handler *ehandler,
 		       const struct sieve_error_params *params,
@@ -581,42 +618,13 @@ void sieve_error_handler_reset(struct sieve_error_handler *ehandler)
  * - Output errors directly to Dovecot master log
  */
 
-typedef void (*master_log_func_t)(const char *fmt, ...) ATTR_FORMAT(1, 2);
-
 static void ATTR_FORMAT(4, 0)
-sieve_master_logv(struct sieve_error_handler *ehandler ATTR_UNUSED,
+sieve_master_logv(struct sieve_error_handler *ehandler,
 		  const struct sieve_error_params *params,
 		  enum sieve_error_flags flags ATTR_UNUSED,
 		  const char *fmt, va_list args)
 {
-	master_log_func_t log_func;
-	string_t *str;
-
-	switch (params->log_type) {
-	case LOG_TYPE_ERROR:
-		log_func = i_error;
-		break;
-	case LOG_TYPE_WARNING:
-		log_func = i_warning;
-		break;
-	case LOG_TYPE_INFO:
-		log_func = i_info;
-		break;
-	case LOG_TYPE_DEBUG:
-		log_func = i_debug;
-		break;
-	default:
-		i_unreached();
-	}
-
-	str = t_str_new(256);
-	str_append(str, "sieve: ");
-
-	if (params->location != NULL && *params->location != '\0')
-		str_printfa(str, "%s: ", params->location);
-	str_vprintfa(str, fmt, args);
-
-	log_func("%s", str_c(str));
+	sieve_direct_master_vlog(ehandler->svinst, params, fmt, args);
 }
 
 struct sieve_error_handler *
-- 
GitLab