summaryrefslogtreecommitdiffstats
path: root/src/lib-storage/fail-mail.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 09:51:24 +0000
commitf7548d6d28c313cf80e6f3ef89aed16a19815df1 (patch)
treea3f6f2a3f247293bee59ecd28e8cd8ceb6ca064a /src/lib-storage/fail-mail.c
parentInitial commit. (diff)
downloaddovecot-upstream.tar.xz
dovecot-upstream.zip
Adding upstream version 1:2.3.19.1+dfsg1.upstream/1%2.3.19.1+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/lib-storage/fail-mail.c')
-rw-r--r--src/lib-storage/fail-mail.c271
1 files changed, 271 insertions, 0 deletions
diff --git a/src/lib-storage/fail-mail.c b/src/lib-storage/fail-mail.c
new file mode 100644
index 0000000..f236d76
--- /dev/null
+++ b/src/lib-storage/fail-mail.c
@@ -0,0 +1,271 @@
+/* Copyright (c) 2009-2018 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "array.h"
+#include "mail-storage-private.h"
+#include "fail-mail-storage.h"
+
+struct mail *
+fail_mailbox_mail_alloc(struct mailbox_transaction_context *t,
+ enum mail_fetch_field wanted_fields ATTR_UNUSED,
+ struct mailbox_header_lookup_ctx *wanted_headers ATTR_UNUSED)
+{
+ struct mail_private *mail;
+ pool_t pool;
+
+ pool = pool_alloconly_create("fail mail", 1024);
+ mail = p_new(pool, struct mail_private, 1);
+ mail->mail.box = t->box;
+ mail->mail.transaction = t;
+ mail->v = fail_mail_vfuncs;
+ mail->pool = pool;
+ p_array_init(&mail->module_contexts, pool, 5);
+ return &mail->mail;
+}
+
+static void fail_mail_free(struct mail *mail)
+{
+ struct mail_private *pmail = (struct mail_private *)mail;
+
+ pool_unref(&pmail->pool);
+}
+
+static void fail_mail_set_seq(struct mail *mail, uint32_t seq, bool saving)
+{
+ mail->seq = seq;
+ mail->uid = seq;
+ mail->saving = saving;
+
+ mail->expunged = TRUE;
+ mail->has_nuls = FALSE;
+ mail->has_no_nuls = FALSE;
+}
+
+static bool fail_mail_set_uid(struct mail *mail, uint32_t uid)
+{
+ fail_mail_set_seq(mail, uid, FALSE);
+ return TRUE;
+}
+
+static void fail_mail_set_uid_cache_updates(struct mail *mail ATTR_UNUSED,
+ bool set ATTR_UNUSED)
+{
+}
+
+static bool fail_mail_prefetch(struct mail *mail ATTR_UNUSED)
+{
+ return TRUE;
+}
+
+static int fail_mail_precache(struct mail *mail ATTR_UNUSED)
+{
+ return 0;
+}
+
+static void
+fail_mail_add_temp_wanted_fields(struct mail *mail ATTR_UNUSED,
+ enum mail_fetch_field fields ATTR_UNUSED,
+ struct mailbox_header_lookup_ctx *headers ATTR_UNUSED)
+{
+}
+
+static enum mail_flags fail_mail_get_flags(struct mail *mail ATTR_UNUSED)
+{
+ return 0;
+}
+
+static const char *const *
+fail_mail_get_keywords(struct mail *mail ATTR_UNUSED)
+{
+ return t_new(const char *, 1);
+}
+
+static const ARRAY_TYPE(keyword_indexes) *
+fail_mail_get_keyword_indexes(struct mail *mail ATTR_UNUSED)
+{
+ ARRAY_TYPE(keyword_indexes) *kw_indexes;
+
+ kw_indexes = t_new(ARRAY_TYPE(keyword_indexes), 1);
+ t_array_init(kw_indexes, 1);
+ array_append_zero(kw_indexes);
+ return kw_indexes;
+}
+
+static uint64_t fail_mail_get_modseq(struct mail *mail ATTR_UNUSED)
+{
+ return 0;
+}
+
+static int
+fail_mail_get_parts(struct mail *mail ATTR_UNUSED,
+ struct message_part **parts_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_date(struct mail *mail ATTR_UNUSED,
+ time_t *date_r ATTR_UNUSED, int *timezone_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_received_date(struct mail *mail ATTR_UNUSED,
+ time_t *date_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_save_date(struct mail *mail ATTR_UNUSED,
+ time_t *date_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_fail_mail_size(struct mail *mail ATTR_UNUSED,
+ uoff_t *size_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_physical_size(struct mail *mail ATTR_UNUSED,
+ uoff_t *size_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_first_header(struct mail *mail ATTR_UNUSED,
+ const char *field ATTR_UNUSED,
+ bool decode_to_utf8 ATTR_UNUSED,
+ const char **value_r)
+{
+ *value_r = NULL;
+ return 0;
+}
+
+static int
+fail_mail_get_headers(struct mail *mail ATTR_UNUSED,
+ const char *field ATTR_UNUSED,
+ bool decode_to_utf8 ATTR_UNUSED,
+ const char *const **value_r)
+{
+ *value_r = NULL;
+ return 0;
+}
+
+static int
+fail_mail_get_header_stream(struct mail *mail ATTR_UNUSED,
+ struct mailbox_header_lookup_ctx *headers ATTR_UNUSED,
+ struct istream **stream_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_stream(struct mail *mail ATTR_UNUSED, bool get_body ATTR_UNUSED,
+ struct message_size *hdr_size ATTR_UNUSED,
+ struct message_size *body_size ATTR_UNUSED,
+ struct istream **stream_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_binary_stream(struct mail *_mail ATTR_UNUSED,
+ const struct message_part *part ATTR_UNUSED,
+ bool include_hdr ATTR_UNUSED,
+ uoff_t *size_r ATTR_UNUSED,
+ unsigned int *body_lines_r ATTR_UNUSED,
+ bool *binary_r ATTR_UNUSED,
+ struct istream **stream_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int
+fail_mail_get_special(struct mail *mail ATTR_UNUSED,
+ enum mail_fetch_field field ATTR_UNUSED,
+ const char **value_r ATTR_UNUSED)
+{
+ return -1;
+}
+
+static int fail_mail_get_backend_mail(struct mail *mail,
+ struct mail **real_mail_r)
+{
+ *real_mail_r = mail;
+ return 0;
+}
+
+static void
+fail_mail_update_flags(struct mail *mail ATTR_UNUSED,
+ enum modify_type modify_type ATTR_UNUSED,
+ enum mail_flags flags ATTR_UNUSED)
+{
+}
+
+static void
+fail_mail_update_keywords(struct mail *mail ATTR_UNUSED,
+ enum modify_type modify_type ATTR_UNUSED,
+ struct mail_keywords *keywords ATTR_UNUSED)
+{
+}
+
+static void fail_mail_update_modseq(struct mail *mail ATTR_UNUSED,
+ uint64_t min_modseq ATTR_UNUSED)
+{
+}
+
+static void fail_mail_expunge(struct mail *mail ATTR_UNUSED)
+{
+}
+
+static void
+fail_mail_set_cache_corrupted(struct mail *mail ATTR_UNUSED,
+ enum mail_fetch_field field ATTR_UNUSED,
+ const char *reason ATTR_UNUSED)
+{
+}
+
+struct mail_vfuncs fail_mail_vfuncs = {
+ NULL,
+ fail_mail_free,
+ fail_mail_set_seq,
+ fail_mail_set_uid,
+ fail_mail_set_uid_cache_updates,
+ fail_mail_prefetch,
+ fail_mail_precache,
+ fail_mail_add_temp_wanted_fields,
+
+ fail_mail_get_flags,
+ fail_mail_get_keywords,
+ fail_mail_get_keyword_indexes,
+ fail_mail_get_modseq,
+ fail_mail_get_modseq,
+ fail_mail_get_parts,
+ fail_mail_get_date,
+ fail_mail_get_received_date,
+ fail_mail_get_save_date,
+ fail_mail_get_fail_mail_size,
+ fail_mail_get_physical_size,
+ fail_mail_get_first_header,
+ fail_mail_get_headers,
+ fail_mail_get_header_stream,
+ fail_mail_get_stream,
+ fail_mail_get_binary_stream,
+ fail_mail_get_special,
+ fail_mail_get_backend_mail,
+ fail_mail_update_flags,
+ fail_mail_update_keywords,
+ fail_mail_update_modseq,
+ fail_mail_update_modseq,
+ NULL,
+ fail_mail_expunge,
+ fail_mail_set_cache_corrupted,
+ NULL,
+};