mail-error.c revision ff7056842f14fd3b30a2d327dfab165b9d15dd30
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen/* Copyright (C) 2007 Timo Sirainen */
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen#include "lib.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;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen } else if (ENOSPACE(errno)) {
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_r = MAIL_ERROR_NOSPACE;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen *error_string_r = MAIL_ERRSTR_NO_SPACE;
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}