extern char *shell_cmd;
extern char *batch_name;
extern char *password_file;
+extern char *backup_dir;
extern char curr_dir[MAXPATHLEN];
+extern char backup_dir_buf[MAXPATHLEN];
extern char *basis_dir[MAX_BASIS_DIRS+1];
extern struct file_list *first_flist;
-extern struct filter_list_struct daemon_filter_list;
+extern filter_rule_list daemon_filter_list;
uid_t our_uid;
+gid_t our_gid;
int am_generator = 0;
int local_server = 0;
int daemon_over_rsh = 0;
exit_cleanup(RERR_IPC);
}
+ if (backup_dir) {
+ int ret = make_path(backup_dir_buf, MKP_DROP_NAME); /* drops trailing slash */
+ if (ret < 0)
+ exit_cleanup(RERR_SYNTAX);
+ if (ret)
+ rprintf(FINFO, "Created backup_dir %s\n", backup_dir_buf);
+ else if (INFO_GTE(BACKUP, 1))
+ rprintf(FINFO, "backup_dir is %s\n", backup_dir_buf);
+ }
+
io_flush(NORMAL_FLUSH);
if ((pid = do_fork()) == -1) {
/* set place to send errors */
set_msg_fd_out(error_pipe[1]);
- io_start_buffering_out(error_pipe[1]);
+ io_start_multiplex_out(error_pipe[1]);
recv_files(f_in, local_name);
io_flush(FULL_FLUSH);
io_start_buffering_out(f_out);
set_msg_fd_in(error_pipe[0]);
- io_start_buffering_in(error_pipe[0]);
+ io_start_multiplex_in(error_pipe[0]);
#ifdef SUPPORT_HARD_LINKS
if (preserve_hard_links && inc_recurse) {
}
if (protocol_version >= 30)
- io_start_multiplex_in();
+ io_start_multiplex_in(f_in);
else
io_start_buffering_in(f_in);
recv_filter_list(f_in);
if (daemon_filter_list.head) {
char **dir_p;
- struct filter_list_struct *elp = &daemon_filter_list;
+ filter_rule_list *elp = &daemon_filter_list;
for (dir_p = basis_dir; *dir_p; dir_p++) {
char *dir = *dir_p;
setup_protocol(f_out, f_in);
if (protocol_version >= 23)
- io_start_multiplex_out();
+ io_start_multiplex_out(f_out);
if (am_sender) {
keep_dirlinks = 0; /* Must be disabled on the sender. */
if (need_messages_from_generator)
- io_start_multiplex_in();
+ io_start_multiplex_in(f_in);
recv_filter_list(f_in);
do_server_sender(f_in, f_out, argc, argv);
} else
sender_keeps_checksum = 1;
if (protocol_version >= 30)
- io_start_multiplex_out();
+ io_start_multiplex_out(f_out);
else
io_start_buffering_out(f_out);
if (!filesfrom_host)
if (write_batch && !am_server)
start_write_batch(f_out);
flist = send_file_list(f_out, argc, argv);
- set_msg_fd_in(-1);
if (DEBUG_GTE(FLIST, 3))
rprintf(FINFO,"file list sent\n");
if (protocol_version >= 23)
- io_start_multiplex_in();
+ io_start_multiplex_in(f_in);
io_flush(NORMAL_FLUSH);
send_files(f_in, f_out);
if (!read_batch) {
if (protocol_version >= 23)
- io_start_multiplex_in();
+ io_start_multiplex_in(f_in);
if (need_messages_from_generator)
- io_start_multiplex_out();
+ io_start_multiplex_out(f_out);
}
send_filter_list(read_batch ? -1 : f_out);
starttime = time(NULL);
our_uid = MY_UID();
+ our_gid = MY_GID();
am_root = our_uid == 0;
memset(&stats, 0, sizeof(stats));