1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-02-21 23:02:05 +02:00

cp: give a better diagnostic for nonexistent dest/

This patch was written by Jim Meyering and myself.
* src/copy.c (copy_reg): Turn EISDIR to ENOTDIR to improve the
quality of diagnostics for commands like "cp a nosuch/".  Reported
by Марк Коренберг and Alan Curry in the thread starting at:
http://lists.gnu.org/archive/html/bug-coreutils/2010-11/msg00178.html
* THANKS: Update.
* tests/mv/trailing-slash: Add a test.
This commit is contained in:
Paul Eggert
2010-11-21 18:50:41 -08:00
parent be107398e5
commit 013d95af11
3 changed files with 15 additions and 0 deletions

1
THANKS
View File

@@ -362,6 +362,7 @@ M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
Maciej Kwapulinski pikpok@univ.gda.pl
Manas Garg manas@cygsoft.com
Manfred Hollstein manfred@s-direktnet.de
Марк Коренберг socketpair@gmail.com
Marc Boucher marc@mbsi.ca
Marc Haber mh+debian-bugs@zugschlus.de
Marc Lehman schmorp@schmorp.de

View File

@@ -603,6 +603,12 @@ copy_reg (char const *src_name, char const *dst_name,
}
}
}
/* Improve quality of diagnostic when a nonexistent dst_name
ends in a slash and open fails with errno == EISDIR. */
if (dest_desc < 0 && dest_errno == EISDIR
&& *dst_name && dst_name[strlen (dst_name) - 1] == '/')
dest_errno = ENOTDIR;
}
else
omitted_permissions = 0;

View File

@@ -50,4 +50,12 @@ done
#touch a a2
#mv a a2/ && fail=1
# Test for a cp-specific diagnostic introduced after coreutils-8.7:
printf '%s\n' \
"cp: cannot create regular file \`no-such/': Not a directory" \
> expected-err
touch b
cp b no-such/ 2> err && fail=1
compare err expected-err || fail=1
Exit $fail