aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>1998-03-25 00:40:47 +0000
committerAndrew Tridgell <tridge@samba.org>1998-03-25 00:40:47 +0000
commit76076c4bbd066f56b35e1e08c8b88605b4edc615 (patch)
tree0eaef454c5e75e15683d519e4c17ffbcd41ac6f4
parentf92ef572b9b31da5cb9a0494205b9f20a205904f (diff)
downloadandroid_external_rsync-76076c4bbd066f56b35e1e08c8b88605b4edc615.tar.gz
android_external_rsync-76076c4bbd066f56b35e1e08c8b88605b4edc615.tar.bz2
android_external_rsync-76076c4bbd066f56b35e1e08c8b88605b4edc615.zip
fixed the problem where you couldn't specify multiple remote
filenames. The fix will need some testing.
-rw-r--r--compat.c5
-rw-r--r--main.c70
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<argc;i++)
- argv[i] += l+1;
+ int l = strlen(dir);
+ if (strcmp(dir,"/") == 0)
+ l = 0;
+ for (i=0;i<argc;i++)
+ argv[i] += l+1;
}
if (argc == 0 && recurse) {
- argc=1;
- argv--;
- argv[0] = ".";
+ argc=1;
+ argv--;
+ argv[0] = ".";
}
@@ -381,21 +368,22 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
void do_server_recv(int argc,char *argv[])
{
int status;
- char *dir = NULL;
struct file_list *flist;
char *local_name=NULL;
+ char *dir = NULL;
if (verbose > 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);