summaryrefslogtreecommitdiff
path: root/libbb/copy_file.c
diff options
context:
space:
mode:
authorDenis Vlasenko2008-02-13 16:52:00 +0000
committerDenis Vlasenko2008-02-13 16:52:00 +0000
commitd5fe880a57bc140f2e1469d2f1c75f815df94eff (patch)
tree666b3f300bf6eebfd407df9b6d4a0192275eeb8e /libbb/copy_file.c
parent9d96af2e83a9519ac89ff0f8dae7f8478d33f581 (diff)
downloadbusybox-d5fe880a57bc140f2e1469d2f1c75f815df94eff.zip
busybox-d5fe880a57bc140f2e1469d2f1c75f815df94eff.tar.gz
cp: add ENABLE_FEATURE_VERBOSE_CP_MESSAGE. Closes bug 1470
Diffstat (limited to 'libbb/copy_file.c')
-rw-r--r--libbb/copy_file.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libbb/copy_file.c b/libbb/copy_file.c
index 3da8a35..d37d515 100644
--- a/libbb/copy_file.c
+++ b/libbb/copy_file.c
@@ -29,6 +29,7 @@
// for POSIX mode to give reasonable error message
static int ask_and_unlink(const char *dest, int flags)
{
+ int e = errno;
#if DO_POSIX_CP
if (!(flags & (FILEUTILS_FORCE|FILEUTILS_INTERACTIVE))) {
// Either it exists, or the *path* doesnt exist
@@ -50,7 +51,16 @@ static int ask_and_unlink(const char *dest, int flags)
return 0; // not allowed to overwrite
}
if (unlink(dest) < 0) {
- bb_perror_msg("cannot remove '%s'", dest);
+#if ENABLE_FEATURE_VERBOSE_CP_MESSAGE
+ if (e == errno && e == ENOENT) {
+ /* e == ENOTDIR is similar: path has non-dir component,
+ * but in this case we don't even reach copy_file() */
+ bb_error_msg("cannot create '%s': Path does not exist", dest);
+ return -1; // error
+ }
+#endif
+ errno = e;
+ bb_perror_msg("cannot create '%s'", dest);
return -1; // error
}
return 1; // ok (to try again)