-extern char *batch_prefix;
-
-struct file_list *batch_flist;
-
-static char rsync_flist_file[] = ".rsync_flist";
-static char rsync_csums_file[] = ".rsync_csums";
-static char rsync_delta_file[] = ".rsync_delta";
-static char rsync_argvs_file[] = ".rsync_argvs";
-
-static int fdb;
-static int fdb_delta;
-static int fdb_open;
-static int fdb_close;
-
-void write_batch_flist_file(char *buff, int bytes_to_write)
-{
- char filename[MAXPATHLEN];
-
- if (fdb_open) {
- /* Set up file extension */
- strlcpy(filename, batch_prefix, sizeof(filename));
- strlcat(filename, rsync_flist_file, sizeof(filename));
-
- /*
- * Open batch flist file for writing;
- * create it if it doesn't exist
- */
- fdb = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC,
- S_IREAD | S_IWRITE);
- if (fdb == -1) {
- rprintf(FERROR, "Batch file %s open error: %s\n",
- filename, strerror(errno));
- close(fdb);
- exit_cleanup(1);
- }
- fdb_open = 0;
- }
-
- /* Write buffer to batch flist file */
-
- if (write(fdb, buff, bytes_to_write) == -1) {
- rprintf(FERROR, "Batch file %s write error: %s\n",
- filename, strerror(errno));
- close(fdb);
- exit_cleanup(1);
- }
-
- if (fdb_close) {
- close(fdb);
- }
-}
-
-/* TODO: Someone please rewrite this! Why in the world don't we use
- * the send/receive code from flist.c for this? */
-void write_batch_flist_info(int flist_count, struct file_struct **fptr)
-{
- int i;
- int bytes_to_write;
-
- /* Write flist info to batch file */
-
- bytes_to_write =
- sizeof(time_t) +
- sizeof(OFF_T) +
- sizeof(mode_t) +
- sizeof(INO64_T) +
- sizeof(DEV64_T) +
- sizeof(DEV64_T) +
- sizeof(uid_t) +
- sizeof(gid_t);
-
- fdb_open = 1;
- fdb_close = 0;
-
- for (i = 0; i < flist_count; i++) {
- write_batch_flist_file((char*)&fptr[i]->flags, sizeof fptr[0]->flags);
- write_batch_flist_file((char*)fptr[i], bytes_to_write);
- write_char_bufs(fptr[i]->basename);
- write_char_bufs(fptr[i]->dirname);
- write_char_bufs(fptr[i]->basedir);
- write_char_bufs(fptr[i]->link);
- if (i == flist_count - 1) {
- fdb_close = 1;
- }
- write_char_bufs(fptr[i]->sum);
- }
-}
-
-void write_char_bufs(char *buf)
-{
- /* Write the size of the string which will follow */
-
- char b[4];
-
- SIVAL(b, 0, buf != NULL ? strlen(buf) : 0);
-
- write_batch_flist_file(b, sizeof(int));
-
- /* Write the string if there is one */
-
- if (buf != NULL) {
- write_batch_flist_file(buf, strlen(buf));
- }
-}
-
-void write_batch_argvs_file(int argc, char *argv[])
-{
- int fdb;
- int i;
- char buff[256]; /* XXX */
- char buff2[MAXPATHLEN + 6];
- char filename[MAXPATHLEN];
-
- /* Set up file extension */
- strlcpy(filename, batch_prefix, sizeof(filename));
- strlcat(filename, rsync_argvs_file, sizeof(filename));
-
- /*
- * Open batch argvs file for writing;
- * create it if it doesn't exist
- */
- fdb = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC,
- S_IREAD | S_IWRITE | S_IEXEC);
- if (fdb == -1) {
- rprintf(FERROR, "Batch file %s open error: %s\n",
- filename, strerror(errno));
- close(fdb);
- exit_cleanup(1);
- }
- buff[0] = '\0';
-
- /* Write argvs info to batch file */