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:
1
THANKS
1
THANKS
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user