#include "rsync.h"
#include "popt.h"
+extern int module_id;
extern int sanitize_paths;
extern int select_timeout;
extern struct filter_list_struct filter_list;
int numeric_ids = 0;
int force_delete = 0;
int io_timeout = 0;
-int module_id = -1;
int am_server = 0;
-int am_sender = 0;
+int am_sender = -1;
int am_generator = 0;
char *files_from = NULL;
int filesfrom_fd = -1;
break;
case OPT_FILTER:
- add_filter(&filter_list, poptGetOptArg(pc), 0);
+ add_filter(&filter_list, poptGetOptArg(pc), 0, 0);
break;
case OPT_EXCLUDE:
add_filter(&filter_list, poptGetOptArg(pc),
- XFLG_DEF_EXCLUDE);
+ 0, XFLG_OLD_PREFIXES);
break;
case OPT_INCLUDE:
add_filter(&filter_list, poptGetOptArg(pc),
- XFLG_DEF_INCLUDE);
+ MATCHFLG_INCLUDE, XFLG_OLD_PREFIXES);
break;
case OPT_EXCLUDE_FROM:
if (check_filter(&server_filter_list, cp, 0) < 0)
goto options_rejected;
}
- add_filter_file(&filter_list, arg, XFLG_FATAL_ERRORS
- | (opt == OPT_INCLUDE_FROM ? XFLG_DEF_INCLUDE
- : XFLG_DEF_EXCLUDE));
+ add_filter_file(&filter_list, arg,
+ opt == OPT_INCLUDE_FROM ? MATCHFLG_INCLUDE : 0,
+ XFLG_FATAL_ERRORS | XFLG_OLD_PREFIXES);
break;
case 'h':
case 'F':
switch (++F_option_cnt) {
case 1:
- add_filter(&filter_list,
- ": /.rsync-filter", 0);
+ add_filter(&filter_list,": /.rsync-filter",0,0);
break;
case 2:
- add_filter(&filter_list,
- "- .rsync-filter", 0);
+ add_filter(&filter_list,"- .rsync-filter",0,0);
break;
}
break;
break;
case OPT_MAX_SIZE:
- for (arg = max_size_arg; isdigit(*arg); arg++) {}
+ for (arg = max_size_arg; isdigit(*(uchar*)arg); arg++) {}
if (*arg == '.')
- for (arg++; isdigit(*arg); arg++) {}
+ for (arg++; isdigit(*(uchar*)arg); arg++) {}
switch (*arg) {
case 'k': case 'K':
max_size = atof(max_size_arg) * 1024;
}
}
+ if (am_sender < 0)
+ am_sender = 0;
+
#if !SUPPORT_LINKS
if (preserve_links && !am_sender) {
snprintf(err_buf, sizeof err_buf,
"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;
partial_dir = NULL;
else if (*partial_dir != '/') {
add_filter(&filter_list, partial_dir,
- XFLG_DIRECTORY | XFLG_DEF_EXCLUDE);
+ MATCHFLG_NO_PREFIXES|MATCHFLG_DIRECTORY, 0);
}
keep_partial = 1;
}
if (copy_links)
argstr[x++] = 'L';
if (xfer_dirs > 1)
- argstr[x++] = 'k';
+ argstr[x++] = 'd';
if (keep_dirlinks && am_sender)
argstr[x++] = 'K';