Reorganise, make it just one function, remove -v option it didnt work properly anyway...
[oweals/busybox.git] / coreutils / cp.c
index 254445f029703ed9db189906a5328ebcb0626798..8f8fe5ed35c940aeab0a77565ed944056dc5fb58 100644 (file)
@@ -36,28 +36,28 @@ extern int cp_main(int argc, char **argv)
 {
        int status = 0;
        int opt;
-       int flags = 0;
+       int flags = FILEUTILS_DEREFERENCE;
        int i;
 
        while ((opt = getopt(argc, argv, "adfipR")) != -1)
                switch (opt) {
                case 'a':
-                       flags |= CP_PRESERVE_STATUS | CP_RECUR;
+                       flags |= FILEUTILS_PRESERVE_STATUS | FILEUTILS_RECUR;
                        /* fallthrough */
                case 'd':
-                       flags |= CP_PRESERVE_SYMLINKS;
+                       flags &= ~FILEUTILS_DEREFERENCE;
                        break;
                case 'f':
-                       flags |= CP_FORCE;
+                       flags |= FILEUTILS_FORCE;
                        break;
                case 'i':
-                       flags |= CP_INTERACTIVE;
+                       flags |= FILEUTILS_INTERACTIVE;
                        break;
                case 'p':
-                       flags |= CP_PRESERVE_STATUS;
+                       flags |= FILEUTILS_PRESERVE_STATUS;
                        break;
                case 'R':
-                       flags |= CP_RECUR;
+                       flags |= FILEUTILS_RECUR;
                        break;
                default:
                        show_usage();
@@ -73,9 +73,9 @@ extern int cp_main(int argc, char **argv)
                int source_exists = 1;
                int dest_exists = 1;
 
-               if (((flags & CP_PRESERVE_SYMLINKS) &&
+               if ((!(flags & FILEUTILS_DEREFERENCE) &&
                                lstat(argv[optind], &source_stat) < 0) ||
-                               (!(flags & CP_PRESERVE_SYMLINKS) &&
+                               ((flags & FILEUTILS_DEREFERENCE) &&
                                 stat(argv[optind], &source_stat))) {
                        if (errno != ENOENT)
                                perror_msg_and_die("unable to stat `%s'", argv[optind]);
@@ -93,7 +93,7 @@ extern int cp_main(int argc, char **argv)
                                (!dest_exists || !S_ISDIR(dest_stat.st_mode))) ||
                                /* ...recursing, the first is a directory, and the
                                 * second doesn't exist, then... */
-                               ((flags & CP_RECUR) && S_ISDIR(source_stat.st_mode) &&
+                               ((flags & FILEUTILS_RECUR) && S_ISDIR(source_stat.st_mode) &&
                                 !dest_exists)) {
                        /* ...do a simple copy.  */
                        if (copy_file(argv[optind], argv[optind + 1], flags) < 0)