/* dir_realpath() is needed to properly dereference symlinks (getcwd() may * not work if permissions cause problems somewhere up the tree). */ char *dir_realpath(pool *p, const char *path) { char buf[PR_TUNABLE_PATH_MAX + 1] = {'\0'}; if (pr_fs_resolve_partial(path, buf, sizeof(buf)-1, 0) == -1) return NULL; return pstrdup(p, buf); }
/* dir_realpath() is needed to properly dereference symlinks (getcwd() may * not work if permissions cause problems somewhere up the tree). */ char *dir_realpath(pool *p, const char *path) { char buf[PR_TUNABLE_PATH_MAX + 1] = {'\0'}; if (p == NULL || path == NULL) { errno = EINVAL; return NULL; } if (pr_fs_resolve_partial(path, buf, sizeof(buf)-1, 0) < 0) { return NULL; } return pstrdup(p, buf); }