rem: if (filter_list.head) write_sbuf(fd, " --exclude-from=-");
add: if (filter_list.head) { if (protocol_version >= 29) write_sbuf(fd, " --filter=._-"); else write_sbuf(fd, " --exclude-from=-"); }
context: void write_batch_shell_file(int argc, char *argv[], int file_arg_cnt){	int fd, i;	char *p, filename[MAXPATHLEN];	stringjoin(filename, sizeof filename,		   batch_name, ".sh", NULL);	fd = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC,		     S_IRUSR | S_IWUSR | S_IEXEC);	if (fd < 0) {		rsyserr(FERROR, errno, "Batch file %s open error", filename);		exit_cleanup(1);	}	/* Write argvs info to BATCH.sh file */	write_arg(fd, argv[0]);	if (filter_list.head)		write_sbuf(fd, " --exclude-from=-");	for (i = 1; i < argc - file_arg_cnt; i++) {		p = argv[i];		if (strncmp(p, "--files-from", 12) == 0		    || strncmp(p, "--include", 9) == 0		    || strncmp(p, "--exclude", 9) == 0) {			if (strchr(p, '=') == NULL)				i++;			continue;		}		write(fd, " ", 1);		if (strncmp(p, "--write-batch", 13) == 0) {			write(fd, "--read-batch", 12);			if (p[13] == '=') {				write(fd, "=", 1);				write_arg(fd, p + 14);			}		} else			write_arg(fd, p);	}	if ((p = find_colon(argv[argc - 1])) != NULL) {		if (*++p == ':')			p++;	} else		p = argv[argc - 1];	write(fd, " ${1:-", 6);	write_arg(fd, p);	write_byte(fd, '}');	if (filter_list.head)		write_filters(fd);	if (write(fd, "\n", 1) != 1 || close(fd) < 0) {		rsyserr(FERROR, errno, "Batch file %s write error", filename);		exit_cleanup(1);	}}