if (0 < same_owner_option)
{
-#if HAVE_LCHOWN
-
/* When lchown exists, it should be used to change the attributes of
the symbolic link itself. In this case, a mere chown would change
the attributes of the file the symbolic link is pointing to, and
if (symlink_flag)
{
+#if HAVE_LCHOWN
if (lchown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
ERROR ((0, errno, _("%s: Cannot lchown to uid %lu gid %lu"),
file_name,
(unsigned long) stat_info->st_uid,
(unsigned long) stat_info->st_gid));
+#endif
}
else
{
file_name,
(unsigned long) stat_info->st_uid,
(unsigned long) stat_info->st_gid));
- }
-
-#else /* not HAVE_LCHOWN */
- if (!symlink_flag)
-
- if (chown (file_name, stat_info->st_uid, stat_info->st_gid) < 0)
- ERROR ((0, errno, _("%s: Cannot chown to uid %lu gid %lu"),
- file_name,
- (unsigned long) stat_info->st_uid,
- (unsigned long) stat_info->st_gid));
-
-#endif/* not HAVE_LCHOWN */
-
- if (!symlink_flag)
-
- /* On a few systems, and in particular, those allowing to give files
- away, changing the owner or group destroys the suid or sgid bits.
- So let's attempt setting these bits once more. */
-
- if (stat_info->st_mode & (S_ISUID | S_ISGID | S_ISVTX))
- set_mode (file_name, stat_info);
+ /* On a few systems, and in particular, those allowing to give files
+ away, changing the owner or group destroys the suid or sgid bits.
+ So let's attempt setting these bits once more. */
+ if (stat_info->st_mode & (S_ISUID | S_ISGID | S_ISVTX))
+ set_mode (file_name, stat_info);
+ }
}
}
break;
}
- errno = saved_errno; /* FIXME: errno should be read-only */
+ errno = saved_errno;
return did_something; /* tell them to retry if we made one */
}
if (written > size)
written = size;
- errno = 0; /* FIXME: errno should be read-only */
+ errno = 0;
sstatus = full_write (fd, data_block->buffer, written);
set_next_block_after ((union block *)
if (stat (CURRENT_FILE_NAME, &st1) == 0 && S_ISDIR (st1.st_mode))
goto check_perms;
- errno = saved_errno; /* FIXME: errno should be read-only */
+ errno = saved_errno;
}
if (maybe_recoverable (CURRENT_FILE_NAME))