]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Auto-create dovecot-uidvalidity's missing parent directory
authorTimo Sirainen <tss@iki.fi>
Wed, 28 Aug 2013 21:57:13 +0000 (00:57 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 28 Aug 2013 21:57:13 +0000 (00:57 +0300)
src/lib-storage/mailbox-uidvalidity.c

index 7300cd5069ecf41083aa64ae5e9d43297640080e..83b12673028eb9a17fa0af1b6a9a62afb28e8a68 100644 (file)
@@ -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();