static const char *mbox_storage_find_root_dir(const struct mail_namespace *ns) { bool debug = ns->mail_set->mail_debug; const char *home, *path; if (mail_user_get_home(ns->user, &home) <= 0) { if (debug) i_debug("maildir: Home directory not set"); home = ""; } path = t_strconcat(home, "/mail", NULL); if (mbox_storage_is_root_dir(path, debug)) return path; path = t_strconcat(home, "/Mail", NULL); if (mbox_storage_is_root_dir(path, debug)) return path; return NULL; }
static bool mbox_storage_autodetect(const struct mail_namespace *ns, struct mailbox_list_settings *set) { bool debug = ns->mail_set->mail_debug; const char *root_dir, *inbox_path; root_dir = set->root_dir; inbox_path = set->inbox_path; if (root_dir != NULL) { if (inbox_path == NULL && mbox_is_file(root_dir, "INBOX file", debug)) { /* using location=<INBOX> */ inbox_path = root_dir; root_dir = NULL; } else if (!mbox_storage_is_root_dir(root_dir, debug)) return FALSE; } if (root_dir == NULL) { root_dir = mbox_storage_find_root_dir(ns); if (root_dir == NULL) { if (debug) i_debug("mbox: couldn't find root dir"); return FALSE; } } if (inbox_path == NULL) { inbox_path = mbox_storage_find_inbox_file(ns->user->username, debug); } set->root_dir = root_dir; set->inbox_path = inbox_path; mbox_storage_get_list_settings(ns, set); return TRUE; }