diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c index 65975cb179eba0f8132a758930d1c55d56e314e3..d7785e7174b4e76d502d4fdf87f780c0cecc1072 100644 --- a/src/lib-sieve/sieve-error.c +++ b/src/lib-sieve/sieve-error.c @@ -377,7 +377,7 @@ void sieve_vdebug void sieve_vcritical (struct sieve_instance *svinst, struct sieve_error_handler *ehandler, - const char *location, const char *prefix, const char *fmt, va_list args) + const char *location, const char *user_prefix, const char *fmt, va_list args) { char str[256]; struct tm *tm; @@ -394,12 +394,12 @@ void sieve_vcritical tm = localtime(&ioloop_time); - if ( prefix == NULL || *prefix == '\0' ) { + if ( user_prefix == NULL || *user_prefix == '\0' ) { sieve_direct_error(svinst, ehandler, 0, location, "%s", ( strftime(str, sizeof(str), CRITICAL_MSG_STAMP, tm) > 0 ? str : CRITICAL_MSG )); } else { - sieve_direct_error(svinst, ehandler, 0, location, "%s: %s", prefix, + sieve_direct_error(svinst, ehandler, 0, location, "%s: %s", user_prefix, ( strftime(str, sizeof(str), CRITICAL_MSG_STAMP, tm) > 0 ? str : CRITICAL_MSG )); } @@ -455,13 +455,13 @@ void sieve_debug void sieve_critical (struct sieve_instance *svinst, struct sieve_error_handler *ehandler, - const char *location, const char *prefix, const char *fmt, ...) + const char *location, const char *user_prefix, const char *fmt, ...) { va_list args; va_start(args, fmt); T_BEGIN { - sieve_vcritical(svinst, ehandler, location, prefix, fmt, args); + sieve_vcritical(svinst, ehandler, location, user_prefix, fmt, args); } T_END; va_end(args); diff --git a/src/lib-sieve/sieve-error.h b/src/lib-sieve/sieve-error.h index d133ff8d05ee77912e746864a50a3510ce1b2a8d..9bdb5e3ecdd3939a3b222ee497b6715308e9e9d1 100644 --- a/src/lib-sieve/sieve-error.h +++ b/src/lib-sieve/sieve-error.h @@ -106,7 +106,8 @@ void sieve_vdebug const char *fmt, va_list args); void sieve_vcritical (struct sieve_instance *svinst, struct sieve_error_handler *ehandler, - const char *location, const char *prefix, const char *fmt, va_list args); + const char *location, const char *user_prefix, const char *fmt, + va_list args); void sieve_error (struct sieve_error_handler *ehandler, const char *location, @@ -122,7 +123,7 @@ void sieve_debug const char *fmt, ...) ATTR_FORMAT(3, 4); void sieve_critical (struct sieve_instance *svinst, struct sieve_error_handler *ehandler, - const char *location, const char *prefix, const char *fmt, ...) + const char *location, const char *user_prefix, const char *fmt, ...) ATTR_FORMAT(5, 6); /* diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c index 92e66fe7a09bfabb7b71277b2f97c8b50479f78a..52e7ade1f7deedd9dcc9324d128f95d62bded770 100644 --- a/src/lib-sieve/sieve-interpreter.c +++ b/src/lib-sieve/sieve-interpreter.c @@ -316,6 +316,25 @@ void sieve_runtime_log va_end(args); } +void sieve_runtime_critical +(const struct sieve_runtime_env *renv, const char *location, + const char *user_prefix, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + + T_BEGIN { + if ( location == NULL ) + location = sieve_runtime_get_full_command_location(renv); + + sieve_vcritical + (renv->svinst, renv->interp->ehandler, location, user_prefix, fmt, args); + } T_END; + + va_end(args); +} + /* * Source location */ diff --git a/src/lib-sieve/sieve-interpreter.h b/src/lib-sieve/sieve-interpreter.h index 649ea759be88bea1a41c3332785b0a6a5c277352..5eaa66dd1f557aabea34a2934bd0c6f6b58eb0eb 100644 --- a/src/lib-sieve/sieve-interpreter.h +++ b/src/lib-sieve/sieve-interpreter.h @@ -92,6 +92,9 @@ void sieve_runtime_warning void sieve_runtime_log (const struct sieve_runtime_env *renv, const char *location, const char *fmt, ...) ATTR_FORMAT(3, 4); +void sieve_runtime_critical + (const struct sieve_runtime_env *renv, const char *location, + const char *user_prefix, const char *fmt, ...) ATTR_FORMAT(4, 5); /* * Extension support