From: Jim Meyering Date: Fri, 13 Mar 1998 23:38:50 +0000 (+0000) Subject: (do_move): Add ©_into_self arg in call to copy. X-Git-Tag: FILEUTILS-3_16n~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e558629ce1cd131b6c2ff3f2eea9b23df5681313;p=platform%2Fupstream%2Fcoreutils.git (do_move): Add ©_into_self arg in call to copy. Don't remove source directory when copy_into_self is nonzero. Reported by Arne Henrik Juul. --- diff --git a/src/mv.c b/src/mv.c index 9b869b7..e9d94a9 100644 --- a/src/mv.c +++ b/src/mv.c @@ -272,6 +272,7 @@ do_move (const char *source, const char *dest, const struct cp_options *x) and set errno to EXDEV. */ static int first = 1; + int copy_into_self; if (first) { @@ -281,13 +282,18 @@ do_move (const char *source, const char *dest, const struct cp_options *x) hash_init (INITIAL_HASH_MODULE, INITIAL_ENTRY_TAB_SIZE); } - fail = copy (source, dest, nonexistent_dst, x); + fail = copy (source, dest, nonexistent_dst, x, ©_into_self); if (fail) { /* Restore original destination file DEST if made a backup. */ if (dest_backup && rename (dest_backup, dest)) error (0, errno, _("cannot un-backup `%s'"), dest); } + else if (copy_into_self) + { + /* Do *not* remove SOURCE if it is the same as or a parent of DEST. + Otherwise, mv would be removing the original *and* the copy. */ + } else { struct rm_options rm_options;