- int fd, i;
- char filename[MAXPATHLEN];
-
- stringjoin(filename, sizeof filename,
- batch_prefix, rsync_argvs_file, 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.rsync_argvs file */
- for (i = 0; i < argc; i++) {
- if (i == argc - 2) /* Skip source directory on cmdline */
- continue;
- if (i != 0)
- write(fd, " ", 1);
- if (!strncmp(argv[i], "--write-batch=", 14)) {
- write(fd, "--read-batch=", 13);
- write(fd, batch_prefix, strlen(batch_prefix));
- } else if (i == argc - 1) {
- char *p = find_colon(argv[i]);
- if (p) {
- if (*++p == ':')
- p++;
- } else
- p = argv[i];
- write(fd, "${1:-", 5);
- write(fd, p, strlen(p));
- write(fd, "}", 1);
- } else
- write(fd, argv[i], strlen(argv[i]));
- }
- if (write(fd, "\n", 1) != 1 || close(fd) < 0) {
- rsyserr(FERROR, errno, "Batch file %s write error", filename);
- exit_cleanup(1);
- }
-}
-
-struct file_list *create_flist_from_batch(void)
-{
- char filename[MAXPATHLEN];
- unsigned short flags;
- int i, f, save_pv;
- int64 save_read;
-
- stringjoin(filename, sizeof filename,
- batch_prefix, rsync_flist_file, NULL);
-
- f = do_open(filename, O_RDONLY, 0);
- if (f < 0) {
- rsyserr(FERROR, errno, "Batch file %s open error", filename);
- exit_cleanup(1);
+ int i, flags;
+
+ if (protocol_version < 29)
+ flag_ptr[7] = NULL;
+ for (i = 0, flags = read_int(fd); flag_ptr[i]; i++) {
+ int set = flags & (1 << i) ? 1 : 0;
+ if (*flag_ptr[i] != set) {
+ if (verbose) {
+ rprintf(FINFO,
+ "%sing the %s option to match the batchfile.\n",
+ set ? "Sett" : "Clear", flag_name[i]);
+ }
+ *flag_ptr[i] = set;
+ }