diff options
author | Rob Landley | 2005-07-20 00:45:40 +0000 |
---|---|---|
committer | Rob Landley | 2005-07-20 00:45:40 +0000 |
commit | 3c12ff7c894d930b1c431954f645087724017995 (patch) | |
tree | f03892cf7bdd37148841e4b4caa3720f67da38d1 /coreutils | |
parent | c337d29550162e4130fe74a1f2c7118da3110343 (diff) | |
download | busybox-3c12ff7c894d930b1c431954f645087724017995.zip busybox-3c12ff7c894d930b1c431954f645087724017995.tar.gz |
If /tmp and /home were different partitions, then "mv /tmp/file /home/file"
would delete /home/file even if /tmp/file didn't exist.
This fixes that, although the logic of both mv and cp is a bit tangled and
should probably be untangled.
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/mv.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/coreutils/mv.c b/coreutils/mv.c index 4f08ded..e1c4529 100644 --- a/coreutils/mv.c +++ b/coreutils/mv.c @@ -99,10 +99,10 @@ DO_MOVE: struct stat source_stat; int source_exists; - if (errno != EXDEV) { + if (errno != EXDEV || + (source_exists = cp_mv_stat(*argv, &source_stat)) < 1) { bb_perror_msg("unable to rename `%s'", *argv); - } - else if ((source_exists = cp_mv_stat(*argv, &source_stat)) >= 0) { + } else { if (dest_exists) { if (dest_exists == 3) { if (source_exists != 3) { |