Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use do_open() instead of open() in several places to help the WinXX port
[rsync/rsync.git]
/
receiver.c
diff --git
a/receiver.c
b/receiver.c
index
816d69f
..
6eb9aca
100644
(file)
--- a/
receiver.c
+++ b/
receiver.c
@@
-358,14
+358,14
@@
int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
fnamecmp = fname;
/* open the file */
fnamecmp = fname;
/* open the file */
- fd1 =
open(fnamecmp,O_RDONLY
);
+ fd1 =
do_open(fnamecmp, O_RDONLY, 0
);
if ((fd1 == -1) && (compare_dest != NULL)) {
/* try the file at compare_dest instead */
slprintf(fnamecmpbuf,MAXPATHLEN,"%s/%s",
compare_dest,fname);
fnamecmp = fnamecmpbuf;
if ((fd1 == -1) && (compare_dest != NULL)) {
/* try the file at compare_dest instead */
slprintf(fnamecmpbuf,MAXPATHLEN,"%s/%s",
compare_dest,fname);
fnamecmp = fnamecmpbuf;
- fd1 =
open(fnamecmp,O_RDONLY
);
+ fd1 =
do_open(fnamecmp, O_RDONLY, 0
);
}
if (fd1 != -1 && do_fstat(fd1,&st) != 0) {
}
if (fd1 != -1 && do_fstat(fd1,&st) != 0) {
@@
-417,8
+417,10
@@
int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
file->mode & INITACCESSPERMS);
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
file->mode & INITACCESSPERMS);
- if (fd2 == -1 && errno == ENOENT &&
- (relative_paths || (compare_dest != NULL)) &&
+ /* in most cases parent directories will already exist
+ because their information should have been previously
+ transferred, but that may not be the case with -R */
+ if (fd2 == -1 && relative_paths && errno == ENOENT &&
create_directory_path(fnametmp) == 0) {
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
file->mode & INITACCESSPERMS);
create_directory_path(fnametmp) == 0) {
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
file->mode & INITACCESSPERMS);
@@
-475,7
+477,7
@@
int recv_files(int f_in,struct file_list *flist,char *local_name,int f_gen)
for (i = 0; i < flist->count; i++) {
file = flist->files[i];
if (!file->basename || !S_ISDIR(file->mode)) continue;
for (i = 0; i < flist->count; i++) {
file = flist->files[i];
if (!file->basename || !S_ISDIR(file->mode)) continue;
- recv_generator(f_name(file),flist,i,-1);
+ recv_generator(
local_name?local_name:
f_name(file),flist,i,-1);
}
if (verbose > 2)
}
if (verbose > 2)