Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
c0dba635
Commit
c0dba635
authored
Sep 23, 2007
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
The --inplace code now properly handles creating a backup when
the --whole-file and/or --read-batch options are specified.
parent
e1ac7791
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
14 deletions
+28
-14
generator.c
generator.c
+28
-14
No files found.
generator.c
View file @
c0dba635
...
...
@@ -899,7 +899,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
#ifdef SUPPORT_HARD_LINKS
try_a_copy:
/* Copy the file locally. */
#endif
if
(
copy_file
(
cmpbuf
,
fname
,
file
->
mode
)
<
0
)
{
if
(
copy_file
(
cmpbuf
,
fname
,
file
->
mode
,
0
)
<
0
)
{
if
(
verbose
)
{
rsyserr
(
FINFO
,
errno
,
"copy_file %s => %s"
,
full_fname
(
cmpbuf
),
fname
);
...
...
@@ -1666,9 +1666,24 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
statret
=
0
;
}
if
(
!
do_xfers
||
read_batch
||
whole_file
)
if
(
!
do_xfers
)
goto
notify_others
;
if
(
read_batch
||
whole_file
)
{
if
(
inplace
&&
make_backups
>
0
&&
fnamecmp_type
==
FNAMECMP_FNAME
)
{
if
(
!
(
backupptr
=
get_backup_name
(
fname
)))
goto
cleanup
;
if
(
!
(
back_file
=
make_file
(
fname
,
NULL
,
NULL
,
0
,
NO_FILTERS
)))
goto
pretend_missing
;
if
(
copy_file
(
fname
,
backupptr
,
back_file
->
mode
,
1
)
<
0
)
{
unmake_file
(
back_file
);
back_file
=
NULL
;
goto
cleanup
;
}
}
goto
notify_others
;
}
if
(
fuzzy_dirlist
)
{
int
j
=
flist_find
(
fuzzy_dirlist
,
file
);
if
(
j
>=
0
)
/* don't use changing file as future fuzzy basis */
...
...
@@ -1676,9 +1691,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
/* open the file */
fd
=
do_open
(
fnamecmp
,
O_RDONLY
,
0
);
if
(
fd
==
-
1
)
{
if
((
fd
=
do_open
(
fnamecmp
,
O_RDONLY
,
0
))
<
0
)
{
rsyserr
(
FERROR
,
errno
,
"failed to open %s, continuing"
,
full_fname
(
fnamecmp
));
pretend_missing:
...
...
@@ -1706,6 +1719,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
rsyserr
(
FERROR
,
errno
,
"unlink %s"
,
full_fname
(
backupptr
));
unmake_file
(
back_file
);
back_file
=
NULL
;
close
(
fd
);
goto
cleanup
;
}
...
...
@@ -1715,6 +1729,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
rsyserr
(
FERROR
,
errno
,
"open %s"
,
full_fname
(
backupptr
));
unmake_file
(
back_file
);
back_file
=
NULL
;
close
(
fd
);
goto
cleanup
;
}
...
...
@@ -1769,15 +1784,17 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
if
(
read_batch
)
goto
cleanup
;
if
(
statret
!=
0
||
whole_file
)
{
if
(
statret
!=
0
||
whole_file
)
write_sum_head
(
f_out
,
NULL
);
goto
cleanup
;
else
{
generate_and_send_sums
(
fd
,
sx
.
st
.
st_size
,
f_out
,
f_copy
);
close
(
fd
);
}
generate_and_send_sums
(
fd
,
sx
.
st
.
st_size
,
f_out
,
f_copy
);
if
(
f_copy
>=
0
)
{
close
(
f_copy
);
cleanup:
if
(
back_file
)
{
if
(
f_copy
>=
0
)
close
(
f_copy
);
set_file_attrs
(
backupptr
,
back_file
,
NULL
,
NULL
,
0
);
if
(
verbose
>
1
)
{
rprintf
(
FINFO
,
"backed up %s to %s
\n
"
,
...
...
@@ -1786,9 +1803,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
unmake_file
(
back_file
);
}
close
(
fd
);
cleanup:
#ifdef SUPPORT_ACLS
if
(
preserve_acls
)
free_acl
(
&
sx
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment