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
Switching to GPL 3.
[rsync/rsync.git]
/
rsync.c
diff --git
a/rsync.c
b/rsync.c
index
935c5dd
..
3c80286
100644
(file)
--- a/
rsync.c
+++ b/
rsync.c
@@
-6,7
+6,7
@@
* Copyright (C) 2003-2007 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* Copyright (C) 2003-2007 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version
2
as
+ * it under the terms of the GNU General Public License version
3
as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
@@
-15,8
+15,7
@@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ * with this program; if not, visit the http://fsf.org website.
*/
#include "rsync.h"
*/
#include "rsync.h"
@@
-41,8
+40,8
@@
extern int am_generator;
extern int am_starting_up;
extern int allow_8bit_chars;
extern int protocol_version;
extern int am_starting_up;
extern int allow_8bit_chars;
extern int protocol_version;
-extern int
preserve_uid
;
-extern int
preserve_gid
;
+extern int
uid_ndx
;
+extern int
gid_ndx
;
extern int inc_recurse;
extern int inplace;
extern int flist_eof;
extern int inc_recurse;
extern int inplace;
extern int flist_eof;
@@
-166,15
+165,19
@@
int read_ndx_and_attrs(int f_in, int *iflag_ptr, uchar *type_ptr,
if (ndx < 0 || ndx >= dir_flist->count) {
ndx = NDX_FLIST_OFFSET - ndx;
rprintf(FERROR,
if (ndx < 0 || ndx >= dir_flist->count) {
ndx = NDX_FLIST_OFFSET - ndx;
rprintf(FERROR,
- "Invalid dir index: %d (%d - %d)\n",
- ndx, NDX_FLIST_OFFSET,
- NDX_FLIST_OFFSET - dir_flist->count);
+ "
[%s]
Invalid dir index: %d (%d - %d)\n",
+
who_am_i(),
ndx, NDX_FLIST_OFFSET,
+ NDX_FLIST_OFFSET - dir_flist->count
+ 1
);
exit_cleanup(RERR_PROTOCOL);
}
/* Send everything read from f_in to msg_fd_out. */
send_msg_int(MSG_FLIST, ndx);
start_flist_forward(f_in);
exit_cleanup(RERR_PROTOCOL);
}
/* Send everything read from f_in to msg_fd_out. */
send_msg_int(MSG_FLIST, ndx);
start_flist_forward(f_in);
+ if (verbose > 3) {
+ rprintf(FINFO, "[%s] receiving flist for dir %d\n",
+ who_am_i(), ndx);
+ }
flist = recv_file_list(f_in);
flist->parent_ndx = ndx;
stop_flist_forward();
flist = recv_file_list(f_in);
flist->parent_ndx = ndx;
stop_flist_forward();
@@
-322,9
+325,9
@@
int set_file_attrs(const char *fname, struct file_struct *file, statx *sxp,
updated = 1;
}
updated = 1;
}
- change_uid = am_root &&
preserve_uid && sxp->st.st_uid !=
F_OWNER(file);
- change_gid =
preserve_gid
&& !(file->flags & FLAG_SKIP_GROUP)
- && sxp->st.st_gid != F_GROUP(file);
+ change_uid = am_root &&
uid_ndx && sxp->st.st_uid != (uid_t)
F_OWNER(file);
+ change_gid =
gid_ndx
&& !(file->flags & FLAG_SKIP_GROUP)
+ && sxp->st.st_gid !=
(gid_t)
F_GROUP(file);
#if !defined HAVE_LCHOWN && !defined CHOWN_MODIFIES_SYMLINK
if (S_ISLNK(sxp->st.st_mode))
;
#if !defined HAVE_LCHOWN && !defined CHOWN_MODIFIES_SYMLINK
if (S_ISLNK(sxp->st.st_mode))
;
@@
-346,8
+349,8
@@
int set_file_attrs(const char *fname, struct file_struct *file, statx *sxp,
if (am_root < 0) {
;
} else if (do_lchown(fname,
if (am_root < 0) {
;
} else if (do_lchown(fname,
- change_uid ? F_OWNER(file) : sxp->st.st_uid,
- change_gid ? F_GROUP(file) : sxp->st.st_gid) != 0) {
+ change_uid ?
(uid_t)
F_OWNER(file) : sxp->st.st_uid,
+ change_gid ?
(gid_t)
F_GROUP(file) : sxp->st.st_gid) != 0) {
/* shouldn't have attempted to change uid or gid
* unless have the privilege */
rsyserr(FERROR, errno, "%s %s failed",
/* shouldn't have attempted to change uid or gid
* unless have the privilege */
rsyserr(FERROR, errno, "%s %s failed",