extern int sanitize_paths;
extern int daemon_over_rsh;
extern unsigned int module_dirlen;
-extern struct filter_list_struct filter_list;
-extern struct filter_list_struct daemon_filter_list;
+extern filter_rule_list filter_list;
+extern filter_rule_list daemon_filter_list;
int make_backups = 0;
static const char *debug_verbosity[] = {
/*0*/ NULL,
/*1*/ NULL,
- /*2*/ "bind,cmd,connect,del,deltasum,dup,filter,flist,iconv",
- /*3*/ "acl,backup,deltasum2,del2,exit,filter2,flist2,fuzzy,genr,own,recv,send,time",
- /*4*/ "cmd2,deltasum3,del3,exit2,flist3,iconv2,own2,proto,time2",
- /*5*/ "chdir,deltasum4,flist4,fuzzy2,hash,hlink",
+ /*2*/ "BIND,CMD,CONNECT,DEL,DELTASUM,DUP,FILTER,FLIST,ICONV",
+ /*3*/ "ACL,BACKUP,DELTASUM2,DEL2,EXIT,FILTER2,FLIST2,FUZZY,GENR,OWN,RECV,SEND,TIME",
+ /*4*/ "CMD2,DELTASUM3,DEL3,EXIT2,FLIST3,ICONV2,OWN2,PROTO,TIME2",
+ /*5*/ "CHDIR,DELTASUM4,FLIST4,FUZZY2,HASH,HLINK",
};
#define MAX_VERBOSITY ((int)(sizeof debug_verbosity / sizeof debug_verbosity[0]) - 1)
static const char *info_verbosity[1+MAX_VERBOSITY] = {
/*0*/ NULL,
- /*1*/ "copy,del,flist,misc,name,stats,symsafe",
- /*2*/ "backup,mount,name2,remove,skip",
+ /*1*/ "COPY,DEL,FLIST,MISC,NAME,STATS,SYMSAFE",
+ /*2*/ "BACKUP,MOUNT,NAME2,REMOVE,SKIP",
};
#define MAX_OUT_LEVEL 4 /* The largest N allowed for any flagN word. */
break;
case OPT_FILTER:
- parse_rule(&filter_list, poptGetOptArg(pc), 0, 0);
+ parse_filter_str(&filter_list, poptGetOptArg(pc),
+ rule_template(0), 0);
break;
case OPT_EXCLUDE:
- parse_rule(&filter_list, poptGetOptArg(pc),
- 0, XFLG_OLD_PREFIXES);
+ parse_filter_str(&filter_list, poptGetOptArg(pc),
+ rule_template(0), XFLG_OLD_PREFIXES);
break;
case OPT_INCLUDE:
- parse_rule(&filter_list, poptGetOptArg(pc),
- MATCHFLG_INCLUDE, XFLG_OLD_PREFIXES);
+ parse_filter_str(&filter_list, poptGetOptArg(pc),
+ rule_template(FILTRULE_INCLUDE), XFLG_OLD_PREFIXES);
break;
case OPT_EXCLUDE_FROM:
goto options_rejected;
}
parse_filter_file(&filter_list, arg,
- opt == OPT_INCLUDE_FROM ? MATCHFLG_INCLUDE : 0,
+ rule_template(opt == OPT_INCLUDE_FROM ? FILTRULE_INCLUDE : 0),
XFLG_FATAL_ERRORS | XFLG_OLD_PREFIXES);
break;
case 'F':
switch (++F_option_cnt) {
case 1:
- parse_rule(&filter_list,": /.rsync-filter",0,0);
+ parse_filter_str(&filter_list,": /.rsync-filter",rule_template(0),0);
break;
case 2:
- parse_rule(&filter_list,"- .rsync-filter",0,0);
+ parse_filter_str(&filter_list,"- .rsync-filter",rule_template(0),0);
break;
}
break;
"--read-batch cannot be used with --files-from\n");
return 0;
}
+ if (read_batch && remove_source_files) {
+ snprintf(err_buf, sizeof err_buf,
+ "--read-batch cannot be used with --remove-%s-files\n",
+ remove_source_files == 1 ? "source" : "sent");
+ return 0;
+ }
if (batch_name && strlen(batch_name) > MAX_BATCH_NAME_LEN) {
snprintf(err_buf, sizeof err_buf,
"the batch-file name must be %d characters or less.\n",
list_only |= 1;
if (xfer_dirs >= 4) {
- parse_rule(&filter_list, "- /*/*", 0, 0);
+ parse_filter_str(&filter_list, "- /*/*", rule_template(0), 0);
recurse = xfer_dirs = 1;
} else if (recurse)
xfer_dirs = 1;
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
}
if (daemon_filter_list.head && !am_sender) {
- struct filter_list_struct *elp = &daemon_filter_list;
+ filter_rule_list *elp = &daemon_filter_list;
if (tmpdir) {
char *dir;
if (!*tmpdir)
} else if (make_backups && delete_mode && !delete_excluded && !am_server) {
snprintf(backup_dir_buf, sizeof backup_dir_buf,
"P *%s", backup_suffix);
- parse_rule(&filter_list, backup_dir_buf, 0, 0);
+ parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
}
if (make_backups && !backup_dir) {