- char filename[MAXPATHLEN];
- int i, f, save_pv;
- int64 save_written;
-
- stringjoin(filename, sizeof filename,
- batch_prefix, rsync_flist_file, NULL);
-
- f = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
- if (f < 0) {
- rsyserr(FERROR, errno, "Batch file %s open error", filename);
- exit_cleanup(1);
- }
-
- save_written = stats.total_written;
- save_pv = protocol_version;
- protocol_version = PROTOCOL_VERSION;
- write_int(f, protocol_version);
- write_int(f, flist_count);
-
- for (i = 0; i < flist_count; i++) {
- send_file_entry(files[i], f,
- files[i]->flags & FLAG_TOP_DIR ? XMIT_TOP_DIR : 0);
- }
- send_file_entry(NULL, f, 0);
-
- protocol_version = save_pv;
- stats.total_written = save_written;
-
- close(f);
-}
-
-
-void write_batch_argvs_file(int argc, char *argv[])
-{
- 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);
- }