From 3fceb9fd5bbd9de85a6cf1bd7863aa89e938e274 Mon Sep 17 00:00:00 2001 From: "Tim J. Robbins" Date: Thu, 19 Dec 2002 01:13:23 +0000 Subject: pathconf() and acl_get_file() follow links so they cannot be used to determine whether a symlink has an ACL. Instead, assume that symbolic links don't have ACLs and don't bother checking. Avoids spurious ENOENT warnings when listing directories containing broken symlinks on filesystems with ACLs enabled. Pointed out by: rwatson, bde --- bin/ls/print.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'bin/ls/print.c') diff --git a/bin/ls/print.c b/bin/ls/print.c index 841270bbb2e9..2fab63a37de5 100644 --- a/bin/ls/print.c +++ b/bin/ls/print.c @@ -674,6 +674,14 @@ aclmode(char *buf, FTSENT *p, int *haveacls) else snprintf(name, sizeof(name), "%s/%s", p->fts_parent->fts_accpath, p->fts_name); + /* + * We have no way to tell whether a symbolic link has an ACL since + * pathconf() and acl_get_file() both follow them. + */ + if (S_ISLNK(p->fts_statp->st_mode)) { + *haveacls = 1; + return; + } if ((ret = pathconf(name, _PC_ACL_EXTENDED)) <= 0) { if (ret < 0 && errno != EINVAL) warn("%s", name); -- cgit v1.2.3