bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen#include "lib.h"
5cdd1691e5185ecfe424f5de7b6f697813b88ba2Timo Sirainen#include "eacces-error.h"
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen#include "mail-error.h"
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainenbool mail_error_from_errno(enum mail_error *error_r,
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen const char **error_string_r)
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen{
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen if (ENOACCESS(errno)) {
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_r = MAIL_ERROR_PERM;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_string_r = MAIL_ERRSTR_NO_PERMISSION;
2ed2459dbd183bb371da4a0aecb2d2b74ae7c815Timo Sirainen } else if (ENOQUOTA(errno)) {
2ed2459dbd183bb371da4a0aecb2d2b74ae7c815Timo Sirainen *error_r = MAIL_ERROR_NOQUOTA;
2ed2459dbd183bb371da4a0aecb2d2b74ae7c815Timo Sirainen *error_string_r = MAIL_ERRSTR_NO_QUOTA;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen } else if (ENOTFOUND(errno)) {
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_r = MAIL_ERROR_NOTFOUND;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_string_r = errno != ELOOP ? "Not found" :
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen "Directory structure is broken";
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen } else {
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen return FALSE;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen }
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen return TRUE;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen}
9e9f0cf3cc3ce546e8a433990c92dd9be6665df6Timo Sirainen
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainenconst char *mail_error_eacces_msg(const char *func, const char *path)
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen{
5cdd1691e5185ecfe424f5de7b6f697813b88ba2Timo Sirainen return eacces_error_get(func, path);
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen}
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainenconst char *mail_error_create_eacces_msg(const char *func, const char *path)
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen{
5cdd1691e5185ecfe424f5de7b6f697813b88ba2Timo Sirainen return eacces_error_get_creating(func, path);
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen}