dovecot-2.0: lib-lda: mail_deliver_save_open() API changed to re...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Jul 16 17:52:07 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/db22952d406a
changeset: 11843:db22952d406a
user: Timo Sirainen <tss at iki.fi>
date: Fri Jul 16 15:52:04 2010 +0100
description:
lib-lda: mail_deliver_save_open() API changed to return also error code.
diffstat:
src/lib-lda/mail-deliver.c | 22 ++++++++++++----------
src/lib-lda/mail-deliver.h | 3 ++-
2 files changed, 14 insertions(+), 11 deletions(-)
diffs (90 lines):
diff -r ff034cc11785 -r db22952d406a src/lib-lda/mail-deliver.c
--- a/src/lib-lda/mail-deliver.c Fri Jul 16 15:45:10 2010 +0100
+++ b/src/lib-lda/mail-deliver.c Fri Jul 16 15:52:04 2010 +0100
@@ -95,23 +95,24 @@
int mail_deliver_save_open(struct mail_deliver_save_open_context *ctx,
const char *name, struct mailbox **box_r,
- const char **error_r)
+ enum mail_error *error_r, const char **error_str_r)
{
struct mail_namespace *ns;
struct mail_storage *storage;
struct mailbox *box;
- enum mail_error error;
enum mailbox_flags flags =
MAILBOX_FLAG_KEEP_RECENT | MAILBOX_FLAG_SAVEONLY |
MAILBOX_FLAG_POST_SESSION;
*box_r = NULL;
- *error_r = NULL;
+ *error_r = MAIL_ERROR_NONE;
+ *error_str_r = NULL;
name = mailbox_name_to_mutf7(name);
ns = mail_namespace_find(ctx->user->namespaces, &name);
if (ns == NULL) {
- *error_r = "Unknown namespace";
+ *error_str_r = "Unknown namespace";
+ *error_r = MAIL_ERROR_PARAMS;
return -1;
}
@@ -133,14 +134,14 @@
return 0;
storage = mailbox_get_storage(box);
- *error_r = mail_storage_get_last_error(storage, &error);
- if (!ctx->lda_mailbox_autocreate || error != MAIL_ERROR_NOTFOUND)
+ *error_str_r = mail_storage_get_last_error(storage, error_r);
+ if (!ctx->lda_mailbox_autocreate || *error_r != MAIL_ERROR_NOTFOUND)
return -1;
/* try creating it. */
if (mailbox_create(box, NULL, FALSE) < 0) {
- *error_r = mail_storage_get_last_error(storage, &error);
- if (error != MAIL_ERROR_EXISTS)
+ *error_str_r = mail_storage_get_last_error(storage, error_r);
+ if (*error_r != MAIL_ERROR_EXISTS)
return -1;
/* someone else just created it */
}
@@ -151,7 +152,7 @@
/* and try opening again */
if (mailbox_sync(box, 0) < 0) {
- *error_r = mail_storage_get_last_error(storage, &error);
+ *error_str_r = mail_storage_get_last_error(storage, error_r);
return -1;
}
return 0;
@@ -186,7 +187,8 @@
open_ctx.lda_mailbox_autosubscribe = ctx->set->lda_mailbox_autosubscribe;
mailbox_name = str_sanitize(mailbox, 80);
- if (mail_deliver_save_open(&open_ctx, mailbox, &box, &errstr) < 0) {
+ if (mail_deliver_save_open(&open_ctx, mailbox, &box,
+ &error, &errstr) < 0) {
if (box != NULL)
mailbox_free(&box);
mail_deliver_log(ctx, "save failed to %s: %s",
diff -r ff034cc11785 -r db22952d406a src/lib-lda/mail-deliver.h
--- a/src/lib-lda/mail-deliver.h Fri Jul 16 15:45:10 2010 +0100
+++ b/src/lib-lda/mail-deliver.h Fri Jul 16 15:52:04 2010 +0100
@@ -2,6 +2,7 @@
#define MAIL_DELIVER_H
enum mail_flags;
+enum mail_error;
struct mail_storage;
struct mailbox;
@@ -60,7 +61,7 @@
be returned even with -1, and the caller must free it then. */
int mail_deliver_save_open(struct mail_deliver_save_open_context *ctx,
const char *name, struct mailbox **box_r,
- const char **error_r);
+ enum mail_error *error_r, const char **error_str_r);
int mail_deliver_save(struct mail_deliver_context *ctx, const char *mailbox,
enum mail_flags flags, const char *const *keywords,
struct mail_storage **storage_r);
More information about the dovecot-cvs
mailing list