Upstream-Status: Inappropriate [legacy version]

This patch was imported from the Fedora Core 8 coreutils-6.9-9 package.

The package is stated as being Licensed as GPLv2+.

Signed-off-by: Mark Hatle <mark.hatle@windriver.com>

----

When "cp -i --update old new" would do nothing because "new" is
newer than "old", cp would nonetheless prompt for whether it is
ok to overwrite "new".  Then, regardless of the response (because
of the --update option), cp would do nothing.

The following patch eliminates the unnecessary prompt in that case.

diff --git a/src/copy.c b/src/copy.c
index b7bf73b..0e549d2 100644
--- a/src/copy.c
+++ b/src/copy.c
@@ -1210,6 +1210,30 @@ copy_internal (char const *src_name, char const *dst_name,
 	      return false;
 	    }

+	  if (!S_ISDIR (src_mode) && x->update)
+	    {
+	      /* When preserving time stamps (but not moving within a file
+		 system), don't worry if the destination time stamp is
+		 less than the source merely because of time stamp
+		 truncation.  */
+	      int options = ((x->preserve_timestamps
+			      && ! (x->move_mode
+				    && dst_sb.st_dev == src_sb.st_dev))
+			     ? UTIMECMP_TRUNCATE_SOURCE
+			     : 0);
+
+	      if (0 <= utimecmp (dst_name, &dst_sb, &src_sb, options))
+		{
+		  /* We're using --update and the destination is not older
+		     than the source, so do not copy or move.  Pretend the
+		     rename succeeded, so the caller (if it's mv) doesn't
+		     end up removing the source file.  */
+		  if (rename_succeeded)
+		    *rename_succeeded = true;
+		  return true;
+		}
+	    }
+
 	  /* When there is an existing destination file, we may end up
 	     returning early, and hence not copying/moving the file.
 	     This may be due to an interactive `negative' reply to the
@@ -1302,30 +1326,6 @@ copy_internal (char const *src_name, char const *dst_name,
 		      return false;
 		    }
 		}
-
-	      if (x->update)
-		{
-		  /* When preserving time stamps (but not moving within a file
-		     system), don't worry if the destination time stamp is
-		     less than the source merely because of time stamp
-		     truncation.  */
-		  int options = ((x->preserve_timestamps
-				  && ! (x->move_mode
-					&& dst_sb.st_dev == src_sb.st_dev))
-				 ? UTIMECMP_TRUNCATE_SOURCE
-				 : 0);
-
-		  if (0 <= utimecmp (dst_name, &dst_sb, &src_sb, options))
-		    {
-		      /* We're using --update and the destination is not older
-			 than the source, so do not copy or move.  Pretend the
-			 rename succeeded, so the caller (if it's mv) doesn't
-			 end up removing the source file.  */
-		      if (rename_succeeded)
-			*rename_succeeded = true;
-		      return true;
-		    }
-		}
 	    }

 	  if (x->move_mode)
diff --git a/tests/mv/update b/tests/mv/update
index 0c06024..6c3d149 100755
--- a/tests/mv/update
+++ b/tests/mv/update
@@ -1,7 +1,7 @@
 #!/bin/sh
 # make sure --update works as advertised

-# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2004, 2006-2007 Free Software Foundation, Inc.

 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -46,11 +46,16 @@ fi

 fail=0

-for cp_or_mv in cp mv; do
-  # This is a no-op.
-  $cp_or_mv --update old new || fail=1
-  case "`cat new`" in new) ;; *) fail=1 ;; esac
-  case "`cat old`" in old) ;; *) fail=1 ;; esac
+for interactive in '' -i; do
+  for cp_or_mv in cp mv; do
+    # This is a no-op, with no prompt.
+    # With coreutils-6.9 and earlier, using --update with -i would
+    # mistakenly elicit a prompt.
+    $cp_or_mv $interactive --update old new < /dev/null > out 2>&1 || fail=1
+    test -s out && fail=1
+    case "`cat new`" in new) ;; *) fail=1 ;; esac
+    case "`cat old`" in old) ;; *) fail=1 ;; esac
+  done
 done

 # This will actually perform the rename.
--
1.5.3.rc1.16.g9d6f
