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
Mention the chmod utility's manpage number.
[rsync/rsync.git]
/
generator.c
diff --git
a/generator.c
b/generator.c
index
e444def
..
44a097d
100644
(file)
--- a/
generator.c
+++ b/
generator.c
@@
-45,6
+45,7
@@
extern int preserve_uid;
extern int preserve_gid;
extern int preserve_times;
extern int omit_dir_times;
extern int preserve_gid;
extern int preserve_times;
extern int omit_dir_times;
+extern int delete_mode;
extern int delete_before;
extern int delete_during;
extern int delete_after;
extern int delete_before;
extern int delete_during;
extern int delete_after;
@@
-144,7
+145,7
@@
static int delete_item(char *fname, int mode, int flags)
return -1;
}
return -1;
}
- zap_dir = flags & DEL_FORCE_RECURSE ||
(force_delete && recurse)
;
+ zap_dir = flags & DEL_FORCE_RECURSE ||
force_delete
;
if ((max_delete && ++deletion_count > max_delete)
|| (dry_run && zap_dir)) {
ok = 0;
if ((max_delete && ++deletion_count > max_delete)
|| (dry_run && zap_dir)) {
ok = 0;
@@
-780,6
+781,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
char *fnamecmp, *partialptr, *backupptr = NULL;
char fnamecmpbuf[MAXPATHLEN];
uchar fnamecmp_type;
char *fnamecmp, *partialptr, *backupptr = NULL;
char fnamecmpbuf[MAXPATHLEN];
uchar fnamecmp_type;
+ int del_opts = DEL_TERSE | (delete_mode ? DEL_FORCE_RECURSE : 0);
if (list_only)
return;
if (list_only)
return;
@@
-869,7
+871,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
* we need to delete it. If it doesn't exist, then
* (perhaps recursively) create it. */
if (statret == 0 && !S_ISDIR(st.st_mode)) {
* we need to delete it. If it doesn't exist, then
* (perhaps recursively) create it. */
if (statret == 0 && !S_ISDIR(st.st_mode)) {
- if (delete_item(fname, st.st_mode,
DEL_TERSE
) < 0)
+ if (delete_item(fname, st.st_mode,
del_opts
) < 0)
return;
statret = -1;
}
return;
statret = -1;
}
@@
-944,7
+946,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
/* Not the right symlink (or not a symlink), so
* delete it. */
}
/* Not the right symlink (or not a symlink), so
* delete it. */
- if (delete_item(fname, st.st_mode,
DEL_TERSE
) < 0)
+ if (delete_item(fname, st.st_mode,
del_opts
) < 0)
return;
if (!S_ISLNK(st.st_mode))
statret = -1;
return;
if (!S_ISLNK(st.st_mode))
statret = -1;
@@
-1002,7
+1004,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
|| (st.st_mode & ~CHMOD_BITS) != (file->mode & ~CHMOD_BITS)
|| st.st_rdev != file->u.rdev) {
if (statret == 0
|| (st.st_mode & ~CHMOD_BITS) != (file->mode & ~CHMOD_BITS)
|| st.st_rdev != file->u.rdev) {
if (statret == 0
- && delete_item(fname, st.st_mode,
DEL_TERSE
) < 0)
+ && delete_item(fname, st.st_mode,
del_opts
) < 0)
return;
if (preserve_hard_links && file->link_u.links
&& hard_link_check(file, ndx, fname, -1, &st,
return;
if (preserve_hard_links && file->link_u.links
&& hard_link_check(file, ndx, fname, -1, &st,
@@
-1083,7
+1085,7
@@
static void recv_generator(char *fname, struct file_struct *file, int ndx,
fnamecmp_type = FNAMECMP_FNAME;
if (statret == 0 && !S_ISREG(st.st_mode)) {
fnamecmp_type = FNAMECMP_FNAME;
if (statret == 0 && !S_ISREG(st.st_mode)) {
- if (delete_item(fname, st.st_mode,
DEL_TERSE
) != 0)
+ if (delete_item(fname, st.st_mode,
del_opts
) != 0)
return;
statret = -1;
stat_errno = ENOENT;
return;
statret = -1;
stat_errno = ENOENT;