if (delete_during && f_out != -1 && !phase && dry_run < 2
&& (file->flags & FLAG_DEL_HERE))
delete_in_dir(the_file_list, fname, file, &st);
-@@ -1328,6 +1343,8 @@ void generate_files(int f_out, struct fi
+@@ -1330,6 +1345,8 @@ void generate_files(int f_out, struct fi
* notice that and let us know via the redo pipe (or its closing). */
ignore_timeout = 1;
{"times", 't', POPT_ARG_VAL, &preserve_times, 1, 0, 0 },
{"no-times", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
{"no-t", 0, POPT_ARG_VAL, &preserve_times, 0, 0, 0 },
-@@ -1062,6 +1074,23 @@ int parse_arguments(int *argc, const cha
+@@ -1063,6 +1075,23 @@ int parse_arguments(int *argc, const cha
usage(FINFO);
exit_cleanup(0);
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -1502,6 +1531,10 @@ void server_options(char **args,int *arg
+@@ -1503,6 +1532,10 @@ void server_options(char **args,int *arg
if (preserve_hard_links)
argstr[x++] = 'H';
/* We now check to see if we are writing file "inplace" */
--- old/rsync.c
+++ new/rsync.c
-@@ -100,7 +100,8 @@ void free_sums(struct sum_struct *s)
+@@ -101,7 +101,8 @@ void free_sums(struct sum_struct *s)
/* This is only called when we aren't preserving permissions. Figure out what
* the permissions should be and return them merged back into the mode. */
{
/* If the file already exists, we'll return the local permissions,
* possibly tweaked by the --executability option. */
-@@ -115,7 +116,7 @@ mode_t dest_mode(mode_t flist_mode, mode
+@@ -116,7 +117,7 @@ mode_t dest_mode(mode_t flist_mode, mode
cur_mode |= (cur_mode & 0444) >> 2;
}
} else
- cur_mode = flist_mode & ACCESSPERMS & ~orig_umask;
+ cur_mode = (flist_mode & ACCESSPERMS & dflt_perms) | S_IWUSR;
+ if (daemon_chmod_modes && !S_ISLNK(flist_mode))
+ cur_mode = tweak_mode(cur_mode, daemon_chmod_modes);
return (flist_mode & ~CHMOD_BITS) | (cur_mode & CHMOD_BITS);
- }
-
-@@ -214,6 +215,14 @@ int set_file_attrs(char *fname, struct f
+@@ -217,6 +218,14 @@ int set_file_attrs(char *fname, struct f
}
#endif
--chmod=CHMOD change destination permissions
-o, --owner preserve owner (super-user only)
-g, --group preserve group
-@@ -693,7 +694,9 @@ quote(itemize(
+@@ -703,7 +704,9 @@ quote(itemize(
permissions, though the bf(--executability) option might change just
the execute permission for the file.
it() New files get their "normal" permission bits set to the source
their special permission bits disabled except in the case where a new
directory inherits a setgid bit from its parent directory.
))
-@@ -724,9 +727,11 @@ The preservation of the destination's se
+@@ -734,9 +737,11 @@ The preservation of the destination's se
directories when bf(--perms) is off was added in rsync 2.6.7. Older rsync
versions erroneously preserved the three special permission bits for
newly-created files when bf(--perms) was off, while overriding the
dit(bf(-E, --executability)) This option causes rsync to preserve the
executability (or non-executability) of regular files when bf(--perms) is
-@@ -744,6 +749,10 @@ quote(itemize(
+@@ -754,6 +759,10 @@ quote(itemize(
If bf(--perms) is enabled, this option is ignored.
extern int make_backups;
extern struct stats stats;
+extern struct id_pair *id_pairs;
+ extern struct chmod_mode_struct *daemon_chmod_modes;
#if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H
- iconv_t ic_chck = (iconv_t)-1;
-@@ -125,6 +126,8 @@ int set_file_attrs(char *fname, struct f
+@@ -128,6 +129,8 @@ int set_file_attrs(char *fname, struct f
int updated = 0;
STRUCT_STAT st2;
int change_uid, change_gid;
if (!st) {
if (dry_run)
-@@ -157,9 +160,11 @@ int set_file_attrs(char *fname, struct f
+@@ -160,9 +163,11 @@ int set_file_attrs(char *fname, struct f
updated = 1;
}
#if !defined HAVE_LCHOWN && !defined CHOWN_MODIFIES_SYMLINK
if (S_ISLNK(st->st_mode))
;
-@@ -171,18 +176,18 @@ int set_file_attrs(char *fname, struct f
+@@ -174,18 +179,18 @@ int set_file_attrs(char *fname, struct f
rprintf(FINFO,
"set uid of %s from %ld to %ld\n",
fname,
{"fuzzy", 'y', POPT_ARG_NONE, &fuzzy_basis, 0, 0, 0 },
{"compress", 'z', POPT_ARG_NONE, 0, 'z', 0, 0 },
{"compress-level", 0, POPT_ARG_INT, &def_compress_level, 'z', 0, 0 },
-@@ -1062,6 +1065,21 @@ int parse_arguments(int *argc, const cha
+@@ -1063,6 +1066,21 @@ int parse_arguments(int *argc, const cha
usage(FINFO);
exit_cleanup(0);
default:
/* A large opt value means that set_refuse_options()
* turned this option off. */
-@@ -1710,6 +1728,11 @@ void server_options(char **args,int *arg
+@@ -1711,6 +1729,11 @@ void server_options(char **args,int *arg
}
}
log_item(file, &initial_stats, iflags, NULL);
--- old/rsync.c
+++ new/rsync.c
-@@ -50,6 +50,7 @@ extern int inplace;
+@@ -49,6 +49,7 @@ extern int preserve_gid;
+ extern int inplace;
extern int keep_dirlinks;
extern int make_backups;
- extern struct stats stats;
+extern char *link_by_hash_dir;
+ extern struct stats stats;
+ extern struct chmod_mode_struct *daemon_chmod_modes;
- #if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H
- iconv_t ic_chck = (iconv_t)-1;
-@@ -266,8 +267,15 @@ void finish_transfer(char *fname, char *
+@@ -269,8 +270,15 @@ void finish_transfer(char *fname, char *
/* move tmp file over real file */
if (verbose > 2)
rprintf(FINFO, "renaming %s to %s\n", fnametmp, fname);
+}
+
/* Works like waitpid(), but if we already harvested the child pid in our
- * sigchld_handler(), we succeed instead of returning an error. */
+ * remember_children(), we succeed instead of returning an error. */
pid_t wait_process(pid_t pid, int *status_ptr, int flags)
@@ -163,7 +173,7 @@ static void handle_stats(int f)
show_flist_stats();
- _exit(0);
-}
-
- static RETSIGTYPE sigchld_handler(UNUSED(int val))
+ RETSIGTYPE remember_children(UNUSED(int val))
{
#ifdef WNOHANG
@@ -1184,8 +1145,6 @@ int main(int argc,char *argv[])
#endif
- SIGACTMASK(SIGUSR1, sigusr1_handler);
- SIGACTMASK(SIGUSR2, sigusr2_handler);
- SIGACTMASK(SIGCHLD, sigchld_handler);
+ SIGACTMASK(SIGCHLD, remember_children);
#ifdef MAINTAINER_MODE
SIGACTMASK(SIGSEGV, rsync_panic_handler);
--- old/match.c
int keep_partial = 0;
int safe_symlinks = 0;
int copy_unsafe_links = 0;
-@@ -1295,6 +1295,7 @@ int parse_arguments(int *argc, const cha
+@@ -1296,6 +1296,7 @@ int parse_arguments(int *argc, const cha
if (do_progress && !verbose && !log_before_transfer && !am_server)
verbose = 1;
extern int am_starting_up;
extern int allow_8bit_chars;
extern int preserve_uid;
-@@ -300,5 +299,5 @@ const char *who_am_i(void)
+@@ -303,5 +302,5 @@ const char *who_am_i(void)
{
if (am_starting_up)
return am_server ? "server" : "client";