diff options
Diffstat (limited to 'cp.c')
-rw-r--r-- | cp.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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]); |