From: Timo Sirainen Date: Wed, 28 Aug 2013 21:57:13 +0000 (+0300) Subject: lib-storage: Auto-create dovecot-uidvalidity's missing parent directory X-Git-Tag: 2.2.6~122 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8cadc80b21c1087b6dd1b48a6522dcc52a081eac;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Auto-create dovecot-uidvalidity's missing parent directory --- diff --git a/src/lib-storage/mailbox-uidvalidity.c b/src/lib-storage/mailbox-uidvalidity.c index 7300cd5069..83b1267302 100644 --- a/src/lib-storage/mailbox-uidvalidity.c +++ b/src/lib-storage/mailbox-uidvalidity.c @@ -124,6 +124,14 @@ mailbox_uidvalidity_next_rescan(struct mailbox_list *list, const char *path) } d = opendir(dir); + if (d == NULL && errno == ENOENT) { + /* FIXME: the PATH_TYPE_CONTROL should come as a parameter, but + that's an API change, do it in v2.3. it's not really a + problem though, since currently all backends use control + dirs for the uidvalidity file. */ + (void)mailbox_list_mkdir_root(list, dir, MAILBOX_LIST_PATH_TYPE_CONTROL); + d = opendir(dir); + } if (d == NULL) { i_error("opendir(%s) failed: %m", dir); return mailbox_uidvalidity_next_fallback();