Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9212:6d7f6ea02e17 HEAD
eacces_error_get*(): Show current directory if path is relative.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 08 Jul 2009 13:50:32 -0400 |
parents | 219ee9858156 |
children | 5cc26d4fc00f |
files | src/lib/eacces-error.c |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/eacces-error.c Tue Jul 07 23:52:06 2009 -0400 +++ b/src/lib/eacces-error.c Wed Jul 08 13:50:32 2009 -0400 @@ -83,17 +83,24 @@ static const char * eacces_error_get_full(const char *func, const char *path, bool creating) { - const char *prev_path = path, *dir = "/", *p; + const char *prev_path = path, *dir, *p; const struct passwd *pw; const struct group *group; string_t *errmsg; struct stat st, dir_st; + char cwd[PATH_MAX]; int orig_errno, ret = -1; orig_errno = errno; errmsg = t_str_new(256); - str_printfa(errmsg, "%s(%s) failed: Permission denied (euid=%s", - func, path, dec2str(geteuid())); + str_printfa(errmsg, "%s(%s)", func, path); + if (*path != '/') { + dir = getcwd(cwd, sizeof(cwd)); + if (dir != NULL) + str_printfa(errmsg, " in directory %s", dir); + } + str_printfa(errmsg, " failed: Permission denied (euid=%s", + dec2str(geteuid())); pw = getpwuid(geteuid()); if (pw != NULL) @@ -104,6 +111,7 @@ if (group != NULL) str_printfa(errmsg, "(%s)", group->gr_name); + dir = "/"; while ((p = strrchr(prev_path, '/')) != NULL) { dir = t_strdup_until(prev_path, p); ret = stat(dir, &st);