summaryrefslogtreecommitdiff
path: root/lib/lchown.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2004-06-08 12:01:38 +0000
committerJim Meyering <jim@meyering.net>2004-06-08 12:01:38 +0000
commit0746994e48463c4333293902aff972dc89ca966e (patch)
tree3c302e1881fc533dea50c37d452f46003281ce33 /lib/lchown.c
parent54ac424e7d4ce8018ceecbcb952833c32fcd8d19 (diff)
downloadcoreutils-0746994e48463c4333293902aff972dc89ca966e.tar.xz
(lchown): Return EOPNOTSUPP if not supported; this
is what POSIX-2004 specifies.
Diffstat (limited to 'lib/lchown.c')
-rw-r--r--lib/lchown.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/lchown.c b/lib/lchown.c
index 37320fb84..9b99651eb 100644
--- a/lib/lchown.c
+++ b/lib/lchown.c
@@ -44,24 +44,22 @@ extern int errno;
int chown ();
/* Work just like chown, except when FILE is a symbolic link.
- In that case, set errno to ENOSYS and return -1.
+ In that case, set errno to EOPNOTSUPP and return -1.
But if autoconf tests determined that chown modifies
symlinks, then just call chown. */
int
lchown (const char *file, uid_t uid, gid_t gid)
{
-#if CHOWN_MODIFIES_SYMLINK
- return chown (file, uid, gid);
-#else
+#if ! CHOWN_MODIFIES_SYMLINK
struct stat stats;
if (lstat (file, &stats) == 0 && S_ISLNK (stats.st_mode))
{
- errno = ENOSYS;
+ errno = EOPNOTSUPP;
return -1;
}
+#endif
return chown (file, uid, gid);
-#endif
}