diff options
author | Erik Andersen | 2000-01-08 21:16:29 +0000 |
---|---|---|
committer | Erik Andersen | 2000-01-08 21:16:29 +0000 |
commit | 1dbc17f630fa92e2ee3ac0f1e2bccb6adf6f9032 (patch) | |
tree | f86b3ad6f14114543da369473d0f4b20a4fdc436 /coreutils/cp.c | |
parent | 5338ce19c873e7fc2a312eb0fd6443514b5cdb05 (diff) | |
download | busybox-1dbc17f630fa92e2ee3ac0f1e2bccb6adf6f9032.zip busybox-1dbc17f630fa92e2ee3ac0f1e2bccb6adf6f9032.tar.gz |
Fix cp and mv so 'cp foo/README bar' where foo and bar are directories,
and README is a file.
-Erik
Diffstat (limited to 'coreutils/cp.c')
-rw-r--r-- | coreutils/cp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/coreutils/cp.c b/coreutils/cp.c index 4af73c2..e96012d 100644 --- a/coreutils/cp.c +++ b/coreutils/cp.c @@ -48,6 +48,7 @@ static int srcDirFlag = FALSE; static int fileAction(const char *fileName, struct stat* statbuf) { char newdestName[NAME_MAX]; + char* newsrcName = NULL; strcpy(newdestName, destName); if ( srcDirFlag == TRUE ) { @@ -62,7 +63,11 @@ static int fileAction(const char *fileName, struct stat* statbuf) if (newdestName[strlen(newdestName)-1] != '/' ) { strcat(newdestName, "/"); } - strcat(newdestName, srcName); + newsrcName = strrchr(srcName, '/'); + if (newsrcName && *newsrcName != '\0') + strcat(newdestName, newsrcName); + else + strcat(newdestName, srcName); } return (copyFile(fileName, newdestName, preserveFlag, followLinks)); |