X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/d89322c4467f4e393cdefb01cdb23f35b9394615..8bf737494f17ca384b30db13b4bc31a5158f3646:/main.c diff --git a/main.c b/main.c index 44ad9640..3cbf5f8a 100644 --- a/main.c +++ b/main.c @@ -47,6 +47,8 @@ int one_file_system=0; int remote_version=0; int sparse_files=0; int do_compression=0; +int am_root=0; +int orig_umask=0; extern int csum_length; @@ -174,11 +176,20 @@ int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f_out) args[argc++] = tok; } +#if HAVE_REMSH + /* remsh (on HPUX) takes the arguments the other way around */ + args[argc++] = machine; + if (user) { + args[argc++] = "-l"; + args[argc++] = user; + } +#else if (user) { args[argc++] = "-l"; args[argc++] = user; } args[argc++] = machine; +#endif } args[argc++] = rsync_path; @@ -190,7 +201,10 @@ int do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int *f_out) p = strrchr(dir,'/'); if (p) { *p = 0; - args[argc++] = dir; + if (!dir[0]) + args[argc++] = "/"; + else + args[argc++] = dir; p++; } else { args[argc++] = "."; @@ -244,7 +258,7 @@ static char *get_local_name(struct file_list *flist,char *name) if (!name) return NULL; - if (mkdir(name,0777) != 0) { + if (mkdir(name,0777 & ~orig_umask) != 0) { fprintf(FERROR,"mkdir %s : %s\n",name,strerror(errno)); exit_cleanup(1); } else { @@ -280,6 +294,8 @@ void do_server_sender(int argc,char *argv[]) if (strcmp(dir,".")) { int l = strlen(dir); + if (strcmp(dir,"/") == 0) + l = 0; for (i=0;i 3) fprintf(FERROR,"file list sent\n"); send_files(flist,f_out,f_in);