"\n"
"\t-a\tsame as -dpR\n"
"\t-d\tpreserve links\n"
- "\t-p\tpreserve file attributes if possable\n"
+ "\t-p\tpreserve file attributes if possible\n"
"\t-R\tcopy directories recursively\n";
static const char *srcName;
static const char *destName;
static int destDirFlag = FALSE;
-static int destExistsFlag = FALSE;
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 ) {
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));
extern int cp_main(int argc, char **argv)
{
- struct stat statBuf;
-
if (argc < 3) {
usage (cp_usage);
}
destName = argv[argc - 1];
- if (stat(destName, &statBuf) >= 0) {
- destExistsFlag = TRUE;
- if (S_ISDIR(statBuf.st_mode))
- destDirFlag = TRUE;
- }
+ destDirFlag = isDirectory(destName);
if ((argc > 3) && destDirFlag==FALSE) {
fprintf(stderr, "%s: not a directory\n", destName);