OSDN Git Service

If /tmp and /home were different partitions, then "mv /tmp/file /home/file"
authorRob Landley <rob@landley.net>
Wed, 20 Jul 2005 00:45:40 +0000 (00:45 -0000)
committerRob Landley <rob@landley.net>
Wed, 20 Jul 2005 00:45:40 +0000 (00:45 -0000)
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.

coreutils/mv.c

index 4f08ded..e1c4529 100644 (file)
@@ -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) {