From 1dbc17f630fa92e2ee3ac0f1e2bccb6adf6f9032 Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Sat, 8 Jan 2000 21:16:29 +0000 Subject: [PATCH] Fix cp and mv so 'cp foo/README bar' where foo and bar are directories, and README is a file. -Erik --- Changelog | 7 +++++++ Makefile | 2 +- coreutils/cp.c | 7 ++++++- coreutils/mv.c | 7 ++++++- cp.c | 7 ++++++- mv.c | 7 ++++++- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Changelog b/Changelog index 5c06ec1b1..52b34b663 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,10 @@ +0.41 + * Fixed a bug in both cp and mv preventing 'cp foo/README bar' + type commands (file in a directory to another directory) + from working. + + -Erik Andersen, + 0.40 * New Apps: sort, uniq. -beppu * New Apps: lsmod, rmmod -erik diff --git a/Makefile b/Makefile index f1f25cd43..9a59c1fff 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ BUILDTIME=$(shell date "+%Y%m%d-%H%M") # Comment out the following to make a debuggable build # Leave this off for production use. -DODEBUG=false +DODEBUG=true # If you want a static binary, turn this on. I can't think # of many situations where anybody would ever want it static, # but... diff --git a/coreutils/cp.c b/coreutils/cp.c index 4af73c274..e96012d50 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)); diff --git a/coreutils/mv.c b/coreutils/mv.c index 92c40c9b7..467a360de 100644 --- a/coreutils/mv.c +++ b/coreutils/mv.c @@ -40,6 +40,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 ) { @@ -50,7 +51,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, TRUE, TRUE)); diff --git a/cp.c b/cp.c index 4af73c274..e96012d50 100644 --- a/cp.c +++ b/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)); diff --git a/mv.c b/mv.c index 92c40c9b7..467a360de 100644 --- a/mv.c +++ b/mv.c @@ -40,6 +40,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 ) { @@ -50,7 +51,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, TRUE, TRUE)); -- 2.25.1