aboutsummaryrefslogtreecommitdiff
path: root/cp.c
diff options
context:
space:
mode:
Diffstat (limited to 'cp.c')
-rw-r--r--cp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/cp.c b/cp.c
index 82d43adff..8f8fe5ed3 100644
--- a/cp.c
+++ b/cp.c
@@ -36,7 +36,7 @@ extern int cp_main(int argc, char **argv)
36{ 36{
37 int status = 0; 37 int status = 0;
38 int opt; 38 int opt;
39 int flags = 0; 39 int flags = FILEUTILS_DEREFERENCE;
40 int i; 40 int i;
41 41
42 while ((opt = getopt(argc, argv, "adfipR")) != -1) 42 while ((opt = getopt(argc, argv, "adfipR")) != -1)
@@ -45,7 +45,7 @@ extern int cp_main(int argc, char **argv)
45 flags |= FILEUTILS_PRESERVE_STATUS | FILEUTILS_RECUR; 45 flags |= FILEUTILS_PRESERVE_STATUS | FILEUTILS_RECUR;
46 /* fallthrough */ 46 /* fallthrough */
47 case 'd': 47 case 'd':
48 flags |= FILEUTILS_PRESERVE_SYMLINKS; 48 flags &= ~FILEUTILS_DEREFERENCE;
49 break; 49 break;
50 case 'f': 50 case 'f':
51 flags |= FILEUTILS_FORCE; 51 flags |= FILEUTILS_FORCE;
@@ -73,9 +73,9 @@ extern int cp_main(int argc, char **argv)
73 int source_exists = 1; 73 int source_exists = 1;
74 int dest_exists = 1; 74 int dest_exists = 1;
75 75
76 if (((flags & FILEUTILS_PRESERVE_SYMLINKS) && 76 if ((!(flags & FILEUTILS_DEREFERENCE) &&
77 lstat(argv[optind], &source_stat) < 0) || 77 lstat(argv[optind], &source_stat) < 0) ||
78 (!(flags & FILEUTILS_PRESERVE_SYMLINKS) && 78 ((flags & FILEUTILS_DEREFERENCE) &&
79 stat(argv[optind], &source_stat))) { 79 stat(argv[optind], &source_stat))) {
80 if (errno != ENOENT) 80 if (errno != ENOENT)
81 perror_msg_and_die("unable to stat `%s'", argv[optind]); 81 perror_msg_and_die("unable to stat `%s'", argv[optind]);