Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5470:402796d50c3e HEAD
Moved some common code to mailbox-list.c
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 30 Mar 2007 22:30:37 +0300 |
parents | 35a54122b396 |
children | 7df495c556ff |
files | src/lib-storage/list/mailbox-list-fs.c src/lib-storage/list/mailbox-list-maildir.c src/lib-storage/mailbox-list.c |
diffstat | 3 files changed, 27 insertions(+), 49 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-fs.c Fri Mar 30 22:08:11 2007 +0300 +++ b/src/lib-storage/list/mailbox-list-fs.c Fri Mar 30 22:30:37 2007 +0300 @@ -143,8 +143,6 @@ struct fs_mailbox_list *list = (struct fs_mailbox_list *)_list; const struct mailbox_list_settings *set = &_list->set; - mailbox_list_clear_error(&list->list); - if (name == NULL) { /* return root directories */ switch (type) { @@ -210,13 +208,6 @@ struct stat st; const char *path; - mailbox_list_clear_error(&list->list); - - if (!mailbox_list_is_valid_existing_name(_list, name)) { - *status = MAILBOX_NAME_INVALID; - return 0; - } - path = mailbox_list_get_path(_list, name, MAILBOX_LIST_PATH_TYPE_MAILBOX); @@ -269,8 +260,6 @@ struct fs_mailbox_list *list = (struct fs_mailbox_list *)_list; const char *path; - mailbox_list_clear_error(&list->list); - path = t_strconcat(_list->set.control_dir != NULL ? _list->set.control_dir : _list->set.root_dir, "/", _list->set.subscription_fname, NULL); @@ -303,12 +292,6 @@ const char *oldpath, *newpath, *old_indexdir, *new_indexdir, *p; struct stat st; - if (!mailbox_list_is_valid_existing_name(list, oldname) || - !mailbox_list_is_valid_create_name(list, newname)) { - mailbox_list_set_error(list, "Invalid mailbox name"); - return -1; - } - oldpath = mailbox_list_get_path(list, oldname, MAILBOX_LIST_PATH_TYPE_MAILBOX); newpath = mailbox_list_get_path(list, newname,
--- a/src/lib-storage/list/mailbox-list-maildir.c Fri Mar 30 22:08:11 2007 +0300 +++ b/src/lib-storage/list/mailbox-list-maildir.c Fri Mar 30 22:30:37 2007 +0300 @@ -142,8 +142,6 @@ struct maildir_mailbox_list *list = (struct maildir_mailbox_list *)_list; - mailbox_list_clear_error(&list->list); - if (name == NULL) { /* return root directories */ switch (type) { @@ -201,18 +199,9 @@ const char *name, enum mailbox_name_status *status) { - struct maildir_mailbox_list *list = - (struct maildir_mailbox_list *)_list; struct stat st; const char *path; - mailbox_list_clear_error(&list->list); - - if (!mailbox_list_is_valid_existing_name(_list, name)) { - *status = MAILBOX_NAME_INVALID; - return 0; - } - path = mailbox_list_get_path(_list, name, MAILBOX_LIST_PATH_TYPE_MAILBOX); @@ -244,17 +233,6 @@ return list->temp_prefix; } -static const char * -maildir_list_join_refmask(struct mailbox_list *_list __attr_unused__, - const char *ref, const char *mask) -{ - if (*ref != '\0') { - /* merge reference and mask */ - mask = t_strconcat(ref, mask, NULL); - } - return mask; -} - static int maildir_list_set_subscribed(struct mailbox_list *_list, const char *name, bool set) { @@ -262,8 +240,6 @@ (struct maildir_mailbox_list *)_list; const char *path; - mailbox_list_clear_error(&list->list); - path = t_strconcat(_list->set.control_dir != NULL ? _list->set.control_dir : _list->set.root_dir, "/", _list->set.subscription_fname, NULL); @@ -388,12 +364,6 @@ int ret; bool found; - if (!mailbox_list_is_valid_existing_name(list, oldname) || - !mailbox_list_is_valid_create_name(list, newname)) { - mailbox_list_set_error(list, "Invalid mailbox name"); - return -1; - } - /* NOTE: it's possible to rename a nonexisting mailbox which has children. In that case we should ignore the rename() error. */ oldpath = mailbox_list_get_path(list, oldname, @@ -444,7 +414,7 @@ maildir_list_get_path, maildir_list_get_mailbox_name_status, maildir_list_get_temp_prefix, - maildir_list_join_refmask, + NULL, maildir_list_iter_init, maildir_list_iter_next, maildir_list_iter_deinit,
--- a/src/lib-storage/mailbox-list.c Fri Mar 30 22:08:11 2007 +0300 +++ b/src/lib-storage/mailbox-list.c Fri Mar 30 22:30:37 2007 +0300 @@ -183,6 +183,8 @@ const char *mailbox_list_get_path(struct mailbox_list *list, const char *name, enum mailbox_list_path_type type) { + mailbox_list_clear_error(list); + return list->v.get_path(list, name, type); } @@ -194,13 +196,28 @@ const char *mailbox_list_join_refmask(struct mailbox_list *list, const char *ref, const char *mask) { - return list->v.join_refmask(list, ref, mask); + if (list->v.join_refmask != NULL) + return list->v.join_refmask(list, ref, mask); + + /* the default implementation: */ + if (*ref != '\0') { + /* merge reference and mask */ + mask = t_strconcat(ref, mask, NULL); + } + return mask; } int mailbox_list_get_mailbox_name_status(struct mailbox_list *list, const char *name, enum mailbox_name_status *status) { + mailbox_list_clear_error(list); + + if (!mailbox_list_is_valid_existing_name(list, name)) { + *status = MAILBOX_NAME_INVALID; + return 0; + } + return list->v.get_mailbox_name_status(list, name, status); } @@ -229,6 +246,8 @@ int mailbox_list_set_subscribed(struct mailbox_list *list, const char *name, bool set) { + mailbox_list_clear_error(list); + return list->v.set_subscribed(list, name, set); } @@ -240,6 +259,12 @@ int mailbox_list_rename_mailbox(struct mailbox_list *list, const char *oldname, const char *newname) { + if (!mailbox_list_is_valid_existing_name(list, oldname) || + !mailbox_list_is_valid_create_name(list, newname)) { + mailbox_list_set_error(list, "Invalid mailbox name"); + return -1; + } + return list->v.rename_mailbox(list, oldname, newname); }