mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-21 03:12:48 +02:00
(rename): Use stat, not safe_stat.
(rename): Compare src and dest inode numbers rather than src inode and dest *dev* when determining whether src and dest refer to the same file. From marc@math.cornell.edu (Marc Parmet).
This commit is contained in:
@@ -47,13 +47,13 @@ rename (from, to)
|
||||
struct stat from_stats, to_stats;
|
||||
int pid, status;
|
||||
|
||||
if (safe_stat (from, &from_stats))
|
||||
if (stat (from, &from_stats))
|
||||
return -1;
|
||||
|
||||
/* Be careful not to unlink `from' if it happens to be equal to `to' or
|
||||
(on filesystems that silently truncate filenames after 14 characters)
|
||||
if `from' and `to' share the significant characters. */
|
||||
if (safe_stat (to, &to_stats))
|
||||
if (stat (to, &to_stats))
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
return -1;
|
||||
@@ -61,7 +61,7 @@ rename (from, to)
|
||||
else
|
||||
{
|
||||
if ((from_stats.st_dev == to_stats.st_dev)
|
||||
&& (from_stats.st_ino == to_stats.st_dev))
|
||||
&& (from_stats.st_ino == to_stats.st_ino))
|
||||
/* `from' and `to' designate the same file on that filesystem. */
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user