X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/d966ee254a2cc44158bb070c6df0a61a808cbc44..cbbe4892087b74fb8ed2aac6078ee933ac02e920:/rsync.c diff --git a/rsync.c b/rsync.c index f961a5dd..8d0f3207 100644 --- a/rsync.c +++ b/rsync.c @@ -288,8 +288,8 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) return; } -#if SUPPORT_LINKS if (preserve_links && S_ISLNK(file->mode)) { +#if SUPPORT_LINKS char lnk[MAXPATHLEN]; int l; if (statret == 0) { @@ -312,9 +312,9 @@ void recv_generator(char *fname,struct file_list *flist,int i,int f_out) fprintf(FINFO,"%s -> %s\n", fname,file->link); } +#endif return; } -#endif #ifdef HAVE_MKNOD if (am_root && preserve_devices && IS_DEVICE(file->mode)) { @@ -656,6 +656,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) /* open tmp file */ if (strlen(fname) > (MAXPATHLEN-8)) { fprintf(FERROR,"filename too long\n"); + close(fd1); continue; } sprintf(fnametmp,"%s.XXXXXX",fname); @@ -667,7 +668,7 @@ int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen) continue; } fd2 = open(fnametmp,O_WRONLY|O_CREAT,file->mode); - if (relative_paths && errno == ENOENT && + if (fd2 == -1 && relative_paths && errno == ENOENT && create_directory_path(fnametmp) == 0) { fd2 = open(fnametmp,O_WRONLY|O_CREAT,file->mode); } @@ -817,6 +818,7 @@ off_t send_files(struct file_list *flist,int f_out,int f_in) /* map the local file */ if (fstat(fd,&st) != 0) { fprintf(FERROR,"fstat failed : %s\n",strerror(errno)); + close(fd); return -1; }