X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/0b76cd63ee0eacb95285dfb5d2cac2992e1794ef..3591c0660c52cec9fa06e7539b56604a7499fa10:/main.c diff --git a/main.c b/main.c index 0bcc7f54..fc4dc60d 100644 --- a/main.c +++ b/main.c @@ -58,9 +58,9 @@ int force_delete = 0; int io_timeout = 0; int io_error = 0; int read_only = 0; -static int module_id; +int module_id = -1; -static int port = RSYNC_PORT; +int rsync_port = RSYNC_PORT; static char *shell_cmd; @@ -105,7 +105,7 @@ static void report(int f) } -static void server_options(char **args,int *argc) +void server_options(char **args,int *argc) { int ac = *argc; static char argstr[50]; @@ -464,7 +464,7 @@ void start_server(int f_in, int f_out, int argc, char *argv[]) exit_cleanup(0); } -static int client_run(int f_in, int f_out, int pid, int argc, char *argv[]) +int client_run(int f_in, int f_out, int pid, int argc, char *argv[]) { struct file_list *flist; int status = 0, status2 = 0; @@ -512,67 +512,6 @@ static int client_run(int f_in, int f_out, int pid, int argc, char *argv[]) } -int start_socket_client(char *host, char *path, int argc, char *argv[]) -{ - int fd, i; - char *sargs[MAX_ARGS]; - int sargc=0; - char line[1024]; - char *p; - int version; - - fd = open_socket_out(host, port); - if (fd == -1) { - exit_cleanup(1); - } - - server_options(sargs,&sargc); - - sargs[sargc++] = "."; - - if (path && *path) - sargs[sargc++] = path; - - sargs[sargc] = NULL; - - p = strchr(path,'/'); - if (p) *p = 0; - io_printf(fd,"%s\n",path); - if (p) *p = '/'; - - if (!read_line(fd, line, sizeof(line)-1)) { - return -1; - } - - if (sscanf(line,"RSYNCD %d", &version) != 1) { - return -1; - } - - while (1) { - if (!read_line(fd, line, sizeof(line)-1)) { - return -1; - } - if (strcmp(line,"RSYNCD: OK") == 0) break; - rprintf(FINFO,"%s\n", line); - } - - for (i=0;i 1) verbose = 1; - - argc -= optind; - argp = argv + optind; - optind = 0; - - start_server(fd, fd, argc, argp); - - return 0; -} - -static void send_listing(int fd) -{ - int n = lp_numservices(); - int i; - - for (i=0;i 0) { - line[len] = 0; - io_printf(fd,"%s", line); - } - } - if (f) fclose(f); - io_printf(fd,"\n"); - } - - /* read a single line indicating the resource that is wanted */ - while (1) { - int i; - - line[0] = 0; - if (!read_line(fd, line, sizeof(line)-1)) { - return -1; - } - - if (!*line || strcmp(line,"#list")==0) { - send_listing(fd); - return -1; - } - - if (*line == '#') { - /* it's some sort of command that I don't understand */ - io_printf(fd,"ERROR: Unknown command '%s'\n", line); - return -1; - } - - i = lp_number(line); - if (i == -1) { - io_printf(fd,"ERROR: Unknown module '%s'\n", line); - return -1; - } - - return rsync_module(fd, i); - } - - return 0; -} - - -static int daemon_main(void) -{ - if (!lp_load(RSYNCD_CONF)) { - exit_cleanup(1); - } - - if (is_a_socket(STDIN_FILENO)) { - /* we are running via inetd */ - return start_daemon(STDIN_FILENO); - } - - become_daemon(); - - return start_accept_loop(port, start_daemon); -} - int main(int argc,char *argv[]) { @@ -1134,11 +929,6 @@ int main(int argc,char *argv[]) start_server(STDIN_FILENO, STDOUT_FILENO, argc, argv); } - if (argc < 2) { - usage(FERROR); - exit_cleanup(1); - } - return start_client(argc, argv); }