]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Add mail_index_set_error_code()
authorMarco Bettini <marco.bettini@open-xchange.com>
Fri, 22 Sep 2023 08:56:17 +0000 (08:56 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 6 Oct 2023 16:00:06 +0000 (16:00 +0000)
src/lib-index/mail-index-private.h
src/lib-index/mail-index.c

index 722f4a20cacdcc4f466f22c1b1fbd62564b83848..5320bd53f47f3888c408ddad9e6dab21bf502ff7 100644 (file)
@@ -420,6 +420,10 @@ void mail_index_fsck_locked(struct mail_index *index);
    with mail_index_get_error_message(). */
 void mail_index_set_error(struct mail_index *index, const char *fmt, ...)
        ATTR_FORMAT(2, 3) ATTR_COLD;
+void mail_index_set_error_code(struct mail_index *index,
+                              enum mail_index_error_code code,
+                              const char *fmt, ...)
+       ATTR_FORMAT(3, 4) ATTR_COLD;
 /* Same as mail_index_set_error(), but don't log the error. */
 void mail_index_set_error_nolog(struct mail_index *index, const char *str)
        ATTR_COLD;
index 0dec3f69bf02bfa29fa070b1322f7dca7a27617b..4f345a7ce799de4b8ff261f6cdba0299e08a1643 100644 (file)
@@ -876,23 +876,38 @@ struct mail_cache *mail_index_get_cache(struct mail_index *index)
        return index->cache;
 }
 
-void mail_index_set_error(struct mail_index *index, const char *fmt, ...)
+static void ATTR_FORMAT(2,0)
+mail_index_set_verror(struct mail_index *index, const char *fmt, va_list args)
 {
-       va_list va;
-
        i_free(index->last_error.text);
 
        if (fmt == NULL)
                index->last_error.text = NULL;
        else {
-               va_start(va, fmt);
-               index->last_error.text = i_strdup_vprintf(fmt, va);
-               va_end(va);
-
+               index->last_error.text = i_strdup_vprintf(fmt, args);
                e_error(index->event, "%s", index->last_error.text);
        }
 }
 
+void mail_index_set_error(struct mail_index *index, const char *fmt, ...)
+{
+       va_list args;
+       va_start(args, fmt);
+       mail_index_set_verror(index, fmt, args);
+       va_end(args);
+}
+
+void mail_index_set_error_code(struct mail_index *index,
+                              enum mail_index_error_code code,
+                              const char *fmt, ...)
+{
+       va_list args;
+       va_start(args, fmt);
+       mail_index_set_verror(index, fmt, args);
+       index->last_error.code = code;
+       va_end(args);
+}
+
 void mail_index_set_error_nolog(struct mail_index *index, const char *str)
 {
        i_assert(str != NULL);