Add a little implementation of ls(1) so that we can look at all and
[rsync/rsync.git] / clientserver.c
index 82c25de..0f54361 100644 (file)
@@ -78,7 +78,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        if (!user) user = getenv("USER");
        if (!user) user = getenv("LOGNAME");
 
-       fd = open_socket_out(host, rsync_port, &socket_address);
+       fd = open_socket_out_wrapped (host, rsync_port, &socket_address);
        if (fd == -1) {
                exit_cleanup(RERR_SOCKETIO);
        }
@@ -107,11 +107,11 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        io_printf(fd,"%s\n",path);
        if (p) *p = '/';
 
-       while (1) {
-               /* Old servers may just drop the connection here,
-                  rather than sending a proper EXIT command.  Yuck. */
-               kludge_around_eof= True;
+       /* Old servers may just drop the connection here,
+        rather than sending a proper EXIT command.  Yuck. */
+       kludge_around_eof = remote_version < 25;
 
+       while (1) {
                if (!read_line(fd, line, sizeof(line)-1)) {
                        return -1;
                }
@@ -244,6 +244,10 @@ static int rsync_module(int fd, int i)
        log_init();
 
        if (use_chroot) {
+               /* TODO: If we're not running as root, then we'll get
+                * an error here.  I wonder if we should perhaps just
+                * log a warning here, and continue anyhow using the
+                * push_dir feature? -- mbp 2001-08-31 */
                if (chroot(lp_path(i))) {
                        rsyserr(FERROR, errno, "chroot %s failed", lp_path(i));
                        io_printf(fd,"@ERROR: chroot failed\n");
@@ -386,12 +390,14 @@ static void send_listing(int fd)
 {
        int n = lp_numservices();
        int i;
-       
+       extern int remote_version;
+
        for (i=0;i<n;i++)
                if (lp_list(i))
                    io_printf(fd, "%-15s\t%s\n", lp_name(i), lp_comment(i));
 
-       io_printf(fd, "@RSYNCD: EXIT\n");
+       if (remote_version >= 25)
+               io_printf(fd,"@RSYNCD: EXIT\n");
 }
 
 /* this is called when a socket connection is established to a client