* src/copy.c: Include filemode.h.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 16 Mar 2007 20:41:50 +0000 (21:41 +0100)
committerJim Meyering <jim@meyering.net>
Fri, 16 Mar 2007 20:41:50 +0000 (21:41 +0100)
(overwrite_prompt): Say "try to overwrite", not "overwrite", to
make it clearer that the attempt may fail.  Problem reported by
Dan Jacobson in:
http://lists.gnu.org/archive/html/bug-coreutils/2007-03/msg00130.html
Output symbolic mode as well as numeric.
* tests/mv/i-2 (fail): Adjust to new prompt format.

ChangeLog
src/copy.c
tests/mv/i-2

index 2803f3f..6ba6973 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-03-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.c: Include filemode.h.
+       (overwrite_prompt): Say "try to overwrite", not "overwrite", to
+       make it clearer that the attempt may fail.  Problem reported by
+       Dan Jacobson in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2007-03/msg00130.html
+       Output symbolic mode as well as numeric.
+       * tests/mv/i-2 (fail): Adjust to new prompt format.
+
 2007-03-15  Jim Meyering  <jim@meyering.net>
 
        Enforce policy: don't use *scanf functions.
index 49bbb8c..4bdb75c 100644 (file)
@@ -38,6 +38,7 @@
 #include "euidaccess.h"
 #include "error.h"
 #include "fcntl--.h"
+#include "filemode.h"
 #include "filenamecat.h"
 #include "full-write.h"
 #include "getpagesize.h"
@@ -797,10 +798,14 @@ overwrite_prompt (char const *dst_name, struct stat const *dst_sb)
 {
   if (euidaccess (dst_name, W_OK) != 0)
     {
+      char perms[12];          /* "-rwxrwxrwx " ls-style modes. */
+      strmode (dst_sb->st_mode, perms);
+      perms[10] = '\0';
       fprintf (stderr,
-              _("%s: overwrite %s, overriding mode %04lo? "),
+              _("%s: try to overwrite %s, overriding mode %04lo (%s)? "),
               program_name, quote (dst_name),
-              (unsigned long int) (dst_sb->st_mode & CHMOD_MODE_BITS));
+              (unsigned long int) (dst_sb->st_mode & CHMOD_MODE_BITS),
+              &perms[1]);
     }
   else
     {
index ae7c5a1..36d1ce4 100755 (executable)
@@ -2,7 +2,7 @@
 # Test both cp and mv for their behavior with -if and -fi
 # The standards (POSIX and SuS) dictate annoyingly inconsistent behavior.
 
-# Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 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
@@ -61,7 +61,7 @@ cp -if e f < y > out 2>&1 || fail=1
 
 # Make sure out contains the prompt.
 case "`cat out`" in
-  "cp: overwrite \`f', overriding mode 0000?"*) ;;
+  "cp: try to overwrite \`f', overriding mode 0000 (---------)?"*) ;;
   *) fail=1 ;;
 esac