diff options
-rwxr-xr-x | tests/cp.test | 7 | ||||
-rw-r--r-- | toys/posix/cp.c | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/tests/cp.test b/tests/cp.test index dfb80ea1..5c4a7474 100755 --- a/tests/cp.test +++ b/tests/cp.test @@ -120,6 +120,13 @@ testing "-T file" "cp -T b file && cat file" "b\n" "" "" testing "-T dir" "cp -T b dir 2>/dev/null || echo expected" "expected\n" "" "" rm b file +mkdir -p b/c/d/ +mkdir a/ +echo a > b/c/d/file +testing "-D b/c/d/file a/" "cp -D b/c/d/file a/ && cat a/b/c/d/file" "a\n" "" "" +rm -rf a/ +rm -rf b/ + # cp -r ../source destdir # cp -r one/two/three missing # cp -r one/two/three two diff --git a/toys/posix/cp.c b/toys/posix/cp.c index f70c0501..06f1ff92 100644 --- a/toys/posix/cp.c +++ b/toys/posix/cp.c @@ -407,7 +407,7 @@ void cp_main(void) if (*--trail == '/') *trail = 0; if (destdir) { - char *s = FLAG(D) ? dirname(src) : getbasename(src); + char *s = FLAG(D) ? src : getbasename(src); TT.destname = xmprintf("%s/%s", destname, s); if (FLAG(D)) { |