--- main.c.orig	Mon Jul 20 14:43:27 1998
+++ main.c	Fri Oct  9 11:24:00 1998
@@ -96,8 +96,8 @@
 
 static int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f_out)
 {
-	char *args[100];
-	int i,argc=0, ret;
+	char *args[100], *args2[100];
+	int i,argc=0, argc2=0, len=0, ret;
 	char *tok,*dir=NULL;
 	extern int local_server;
 	extern char *rsync_path;
@@ -129,16 +129,33 @@
 		}
 		args[argc++] = machine;
 #endif
+		args2[argc2++] = rsync_path;
+		server_options(args2,&argc2);
+		args2[argc2++] = ".";
 
-		args[argc++] = rsync_path;
+		if (path && *path) 
+		    args2[argc2++] = path;
 
-		server_options(args,&argc);
-	}
+		for(i=0; i<argc2; i++)
+		    len += strlen(args2[i]) + 1;
+
+		args[argc] = (char *)malloc(sizeof(char) * (len + 5));
 
-	args[argc++] = ".";
+		if (args[argc] == NULL)
+		    goto oom;
 
-	if (path && *path) 
+		strcpy(args[argc], args2[0]);
+		for (i=1; i<argc2; i++) {
+		    strcat(args[argc], " ");
+		    strcat(args[argc], args2[i]);
+		}
+		argc++;
+	} else {
+	    args[argc++] = ".";
+
+	    if (path && *path) 
 		args[argc++] = path;
+	}
 
 	args[argc] = NULL;
