From 76076c4bbd066f56b35e1e08c8b88605b4edc615 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 25 Mar 1998 00:40:47 +0000 Subject: [PATCH] fixed the problem where you couldn't specify multiple remote filenames. The fix will need some testing. --- compat.c | 5 ++++ main.c | 70 +++++++++++++++++++++++--------------------------------- 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/compat.c b/compat.c index 237e40c0..ea9b67df 100644 --- a/compat.c +++ b/compat.c @@ -36,6 +36,7 @@ extern int checksum_seed; extern int remote_version; +extern int verbose; void setup_protocol(int f_out,int f_in) { @@ -55,6 +56,10 @@ void setup_protocol(int f_out,int f_in) exit_cleanup(1); } + if (verbose > 2) + fprintf(FINFO, "local_version=%d remote_version=%d\n", + PROTOCOL_VERSION, remote_version); + if (remote_version >= 12) { if (am_server) { checksum_seed = time(NULL); diff --git a/main.c b/main.c index 1af6771e..ec408185 100644 --- a/main.c +++ b/main.c @@ -227,23 +227,10 @@ static int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f server_options(args,&argc); - if (path && *path) { - dir = strdup(path); - p = strrchr(dir,'/'); - if (p && !relative_paths) { - *p = 0; - if (!dir[0]) - args[argc++] = "/"; - else - args[argc++] = dir; - p++; - } else { - args[argc++] = "."; - p = dir; - } - if (p[0]) - args[argc++] = path; - } + args[argc++] = "."; + + if (path && *path) + args[argc++] = path; args[argc] = NULL; @@ -313,31 +300,31 @@ static char *get_local_name(struct file_list *flist,char *name) void do_server_sender(int argc,char *argv[]) { int i; - char *dir = argv[0]; struct file_list *flist; + char *dir = argv[0]; if (verbose > 2) fprintf(FERROR,"server_sender starting pid=%d\n",(int)getpid()); if (!relative_paths && chdir(dir) != 0) { - fprintf(FERROR,"chdir %s: %s (3)\n",dir,strerror(errno)); - exit_cleanup(1); + fprintf(FERROR,"chdir %s: %s (3)\n",dir,strerror(errno)); + exit_cleanup(1); } argc--; argv++; if (strcmp(dir,".")) { - int l = strlen(dir); - if (strcmp(dir,"/") == 0) - l = 0; - for (i=0;i 2) fprintf(FERROR,"server_recv(%d) starting pid=%d\n",argc,(int)getpid()); if (argc > 0) { - dir = argv[0]; - argc--; - argv++; - if (chdir(dir) != 0) { - fprintf(FERROR,"chdir %s : %s (4)\n",dir,strerror(errno)); - exit_cleanup(1); - } + dir = argv[0]; + argc--; + argv++; + if (chdir(dir) != 0) { + fprintf(FERROR,"chdir %s : %s (4)\n", + dir,strerror(errno)); + exit_cleanup(1); + } } if (delete_mode) @@ -408,11 +396,11 @@ void do_server_recv(int argc,char *argv[]) } if (argc > 0) { - if (strcmp(dir,".")) { - argv[0] += strlen(dir); - if (argv[0][0] == '/') argv[0]++; - } - local_name = get_local_name(flist,argv[0]); + if (strcmp(dir,".")) { + argv[0] += strlen(dir); + if (argv[0][0] == '/') argv[0]++; + } + local_name = get_local_name(flist,argv[0]); } status = do_recv(STDIN_FILENO,STDOUT_FILENO,flist,local_name); -- 2.34.1