Allow --max-delete=0 (zero used to be ignored).
authorWayne Davison <wayned@samba.org>
Sat, 11 Nov 2006 05:09:14 +0000 (05:09 +0000)
committerWayne Davison <wayned@samba.org>
Sat, 11 Nov 2006 05:09:14 +0000 (05:09 +0000)
generator.c
options.c

index 582ab79..c4e6ba2 100644 (file)
@@ -125,7 +125,7 @@ static int delete_item(char *fname, int mode, int flags)
        char *p;
 
        if (!S_ISDIR(mode)) {
-               if (max_delete && ++deletion_count > max_delete)
+               if (max_delete >= 0 && ++deletion_count > max_delete)
                        return 0;
                if (make_backups && (backup_dir || !is_backup_file(fname)))
                        ok = make_backup(fname);
@@ -146,7 +146,7 @@ static int delete_item(char *fname, int mode, int flags)
        }
 
        zap_dir = flags & DEL_FORCE_RECURSE || force_delete;
-       if ((max_delete && ++deletion_count > max_delete)
+       if ((max_delete >= 0 && ++deletion_count > max_delete)
            || (dry_run && zap_dir)) {
                ok = 0;
                errno = ENOTEMPTY;
@@ -197,7 +197,7 @@ static int delete_item(char *fname, int mode, int flags)
 
        pop_local_filters(save_filters);
 
-       if (max_delete && ++deletion_count > max_delete)
+       if (max_delete >= 0 && ++deletion_count > max_delete)
                return 0;
 
        if (do_rmdir(fname) == 0) {
@@ -1609,7 +1609,7 @@ void generate_files(int f_out, struct file_list *flist, char *local_name)
        }
        recv_generator(NULL, NULL, 0, 0, 0, code, -1);
 
-       if (max_delete > 0 && deletion_count > max_delete) {
+       if (max_delete >= 0 && deletion_count > max_delete) {
                rprintf(FINFO,
                        "Deletions stopped due to --max-delete limit (%d skipped)\n",
                        deletion_count - max_delete);
index 5fd2993..954719d 100644 (file)
--- a/options.c
+++ b/options.c
@@ -106,7 +106,7 @@ size_t bwlimit_writemax = 0;
 int ignore_existing = 0;
 int ignore_non_existing = 0;
 int need_messages_from_generator = 0;
-int max_delete = 0;
+int max_delete = -1;
 OFF_T max_size = 0;
 OFF_T min_size = 0;
 int ignore_errors = 0;
@@ -1614,7 +1614,7 @@ void server_options(char **args,int *argc)
                args[ac++] = arg;
        }
 
-       if (max_delete && am_sender) {
+       if (max_delete >= 0 && am_sender) {
                if (asprintf(&arg, "--max-delete=%d", max_delete) < 0)
                        goto oom;
                args[ac++] = arg;