Implemented a "!" modifier for filter rules that lets a rule trigger
[rsync/rsync.git] / options.c
index 3611e13..8eb3811 100644 (file)
--- a/options.c
+++ b/options.c
@@ -72,7 +72,7 @@ int numeric_ids = 0;
 int force_delete = 0;
 int io_timeout = 0;
 int am_server = 0;
-int am_sender = 0;
+int am_sender = -1;
 int am_generator = 0;
 char *files_from = NULL;
 int filesfrom_fd = -1;
@@ -825,6 +825,9 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                }
        }
 
+       if (am_sender < 0)
+               am_sender = 0;
+
 #if !SUPPORT_LINKS
        if (preserve_links && !am_sender) {
                snprintf(err_buf, sizeof err_buf,
@@ -914,7 +917,10 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        "You may not combine multiple --delete-WHEN options.\n");
                return 0;
        }
-       if (delete_before || delete_during || delete_after)
+       if (!recurse) {
+               delete_before = delete_during = delete_after = 0;
+               delete_mode = delete_excluded = 0;
+       } else if (delete_before || delete_during || delete_after)
                delete_mode = 1;
        else if (delete_mode || delete_excluded)
                delete_mode = delete_before = 1;
@@ -1126,7 +1132,7 @@ void server_options(char **args,int *argc)
        if (copy_links)
                argstr[x++] = 'L';
        if (xfer_dirs > 1)
-               argstr[x++] = 'k';
+               argstr[x++] = 'd';
        if (keep_dirlinks && am_sender)
                argstr[x++] = 'K';