[BusyBox 0001470]: cp says "cannot remove..." when trying to copy a file to a non-existent directory
bugs at busybox.net
bugs at busybox.net
Fri Aug 24 16:55:04 UTC 2007
A NOTE has been added to this issue.
======================================================================
http://busybox.net/bugs/view.php?id=1470
======================================================================
Reported By: kiltedknight
Assigned To: BusyBox
======================================================================
Project: BusyBox
Issue ID: 1470
Category: Other
Reproducibility: always
Severity: minor
Priority: normal
Status: feedback
======================================================================
Date Submitted: 08-23-2007 10:55 PDT
Last Modified: 08-24-2007 09:55 PDT
======================================================================
Summary: cp says "cannot remove..." when trying to copy a
file to a non-existent directory
Description:
Run this sequence of commands:
touch /tmp/foo
busybox cp /tmp/foo /tmp/nonexistent/path/foo
This is the error message you get:
cp: cannot remove '/tmp/nonexistent/path/foo': No such file or directory
What Linux's cp will say is:
cp: cannot create regular file `/tmp/nonexistent/path/foo': No such file
or directory
If you have DO_POSIX_CP enabled, you will get:
'/tmp/nonexistent/path/foo' exists
Unless you specify the -f or -i flag, in which case you get the "cannot
remove" message
======================================================================
----------------------------------------------------------------------
vda - 08-24-07 07:22
----------------------------------------------------------------------
> This is the error message you get:
> cp: cannot remove '/tmp/nonexistent/path/foo': No such file or
directory
Which is true. cp couldn't create it. cp decided to try unlink,
and creating again. unlink didn't work either. cp lets you know that.
> What Linux's cp will say is:
> cp: cannot create regular file `/tmp/nonexistent/path/foo': No such file
or directory
Read it again.
Do you really think that "I can't create 'foo', it doesn't exist" is
better?
>From naive point of view it is silly too: "of course it doesn't exist
before you create it!"
I undoubtedly can fix bbox cp to match GNU message, but code will be
bigger
and GNU message is still semi-stupid.
For the record: fix should be here:
static int ask_and_unlink(const char *dest, int flags)
{
...
if (unlink(dest) < 0) {
===> if errno == ENOENT or ENOTDIR, explain that *path* is invalid, not
filename <===
bb_perror_msg("cannot remove '%s'", dest);
return -1; // error
}
return 1; // ok (to try again)
}
----------------------------------------------------------------------
kiltedknight - 08-24-07 08:58
----------------------------------------------------------------------
I've read it again. You don't seem to understand...
If the path in which you want to create the file does not exist, you
should never see EEXIST... that implies the file already exists!
----------------------------------------------------------------------
vda - 08-24-07 09:55
----------------------------------------------------------------------
bbox cp says:
cp: cannot remove '/tmp/nonexistent/path/foo': No such file or directory
which sounds stupid
GNU coreutils cp says:
cp: cannot create regular file `/tmp/nonexistent/path/foo': No such file
or directory
which is also stupid.
Do you agree with me on the above?
If yes: then why we should change from one stupid message to another
stupid one?
If no: explain why do you think that coreutils message is better.
Issue History
Date Modified Username Field Change
======================================================================
08-23-07 10:55 kiltedknight New Issue
08-23-07 10:55 kiltedknight Status new => assigned
08-23-07 10:55 kiltedknight Assigned To => BusyBox
08-23-07 10:55 kiltedknight File Added: bb_cp_errmsg_fix.diff
08-23-07 10:55 kiltedknight Issue Monitored: kiltedknight
08-24-07 07:22 vda Status assigned => closed
08-24-07 07:22 vda Note Added: 0002681
08-24-07 07:22 vda Resolution open => won't fix
08-24-07 08:58 kiltedknight Status closed => feedback
08-24-07 08:58 kiltedknight Resolution won't fix => reopened
08-24-07 08:58 kiltedknight Note Added: 0002682
08-24-07 09:55 vda Note Added: 0002683
======================================================================
More information about the busybox-cvs
mailing list