X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/b3d572ade134eaa4f5af7e4a601fbec42f6a6036..88f7513df3fca996d2669285ddb48a362a9a9825:/id-pair.diff diff --git a/id-pair.diff b/id-pair.diff index 70bf5c8..30bd52c 100644 --- a/id-pair.diff +++ b/id-pair.diff @@ -10,15 +10,15 @@ gets to be really large. --- old/flist.c +++ new/flist.c -@@ -60,6 +60,7 @@ extern int protocol_version; +@@ -54,6 +54,7 @@ extern int copy_unsafe_links; + extern int protocol_version; extern int sanitize_paths; - extern const char *io_write_phase; extern struct stats stats; +extern struct id_pair *id_pairs; extern struct file_list *the_file_list; extern char curr_dir[MAXPATHLEN]; -@@ -363,14 +364,14 @@ static void send_file_entry(struct file_ +@@ -347,14 +348,14 @@ static void send_file_entry(struct file_ } } else if (protocol_version < 28) rdev = makedev(0, 0); @@ -37,7 +37,7 @@ gets to be really large. if (file->modtime == modtime) flags |= XMIT_SAME_TIME; else -@@ -623,8 +624,7 @@ static struct file_struct *receive_file_ +@@ -605,8 +606,7 @@ static struct file_struct *receive_file_ file->modtime = modtime; file->length = file_length; file->mode = mode; @@ -47,7 +47,7 @@ gets to be really large. if (dirname_len) { file->dirname = lastdir = bp; -@@ -875,8 +875,7 @@ struct file_struct *make_file(char *fnam +@@ -855,8 +855,7 @@ struct file_struct *make_file(char *fnam file->modtime = st.st_mtime; file->length = st.st_size; file->mode = st.st_mode; @@ -57,7 +57,7 @@ gets to be really large. #ifdef SUPPORT_HARD_LINKS if (flist && flist->hlink_pool) { -@@ -944,8 +943,7 @@ struct file_struct *make_file(char *fnam +@@ -924,8 +923,7 @@ struct file_struct *make_file(char *fnam file->modtime = st2.st_mtime; file->length = st2.st_size; file->mode = st2.st_mode; @@ -67,7 +67,7 @@ gets to be really large. file->u.link = NULL; } else file->mode = save_mode; -@@ -1389,7 +1387,7 @@ struct file_list *recv_file_list(int f) +@@ -1375,7 +1373,7 @@ struct file_list *recv_file_list(int f) clean_flist(flist, relative_paths, 1); if (f >= 0) { @@ -76,7 +76,7 @@ gets to be really large. /* Recv the io_error flag */ if (lp_ignore_errors(module_id) || ignore_errors) -@@ -1705,13 +1703,15 @@ static void output_flist(struct file_lis +@@ -1691,13 +1689,15 @@ static void output_flist(struct file_lis for (i = 0; i < flist->count; i++) { file = flist->files[i]; @@ -100,7 +100,7 @@ gets to be really large. sprintf(depthbuf, "%d", file->dir.depth); --- old/generator.c +++ new/generator.c -@@ -91,6 +91,7 @@ extern dev_t filesystem_dev; +@@ -90,6 +90,7 @@ extern dev_t filesystem_dev; extern char *backup_dir; extern char *backup_suffix; extern int backup_suffix_len; @@ -108,7 +108,7 @@ gets to be really large. extern struct file_list *the_file_list; extern struct filter_list_struct server_filter_list; -@@ -326,10 +327,12 @@ int unchanged_attrs(struct file_struct * +@@ -323,10 +324,12 @@ int unchanged_attrs(struct file_struct * && (st->st_mode & CHMOD_BITS) != (file->mode & CHMOD_BITS)) return 0; @@ -123,7 +123,7 @@ gets to be really large. return 0; return 1; -@@ -342,6 +345,8 @@ void itemize(struct file_struct *file, i +@@ -339,6 +342,8 @@ void itemize(struct file_struct *file, i int keep_time = !preserve_times ? 0 : S_ISDIR(file->mode) ? !omit_dir_times : !S_ISLNK(file->mode); @@ -132,7 +132,7 @@ gets to be really large. if (S_ISREG(file->mode) && file->length != st->st_size) iflags |= ITEM_REPORT_SIZE; -@@ -351,10 +356,10 @@ void itemize(struct file_struct *file, i +@@ -348,10 +353,10 @@ void itemize(struct file_struct *file, i iflags |= ITEM_REPORT_TIME; if ((file->mode & CHMOD_BITS) != (st->st_mode & CHMOD_BITS)) iflags |= ITEM_REPORT_PERMS; @@ -148,15 +148,15 @@ gets to be really large. iflags |= ITEM_IS_NEW; --- old/log.c +++ new/log.c -@@ -45,6 +45,7 @@ extern int preserve_times; - extern int log_format_has_i; - extern int log_format_has_o_or_i; - extern int daemon_log_format_has_o_or_i; -+extern struct id_pair *id_pairs; - extern char *auth_user; +@@ -45,6 +45,7 @@ extern char *auth_user; extern char *log_format; + extern char *logfile_format; + extern char *logfile_name; ++extern struct id_pair *id_pairs; #if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H -@@ -480,16 +481,16 @@ static void log_formatted(enum logcode c + extern iconv_t ic_chck; + #endif +@@ -464,16 +465,16 @@ static void log_formatted(enum logcode c case 'U': strlcat(fmt, "ld", sizeof fmt); snprintf(buf2, sizeof buf2, fmt, @@ -178,15 +178,15 @@ gets to be really large. break; --- old/rsync.c +++ new/rsync.c -@@ -50,6 +50,7 @@ extern int inplace; - extern int keep_dirlinks; +@@ -50,6 +50,7 @@ extern int keep_dirlinks; extern int make_backups; + extern mode_t orig_umask; 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; @@ -195,7 +195,7 @@ gets to be really large. 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; } @@ -210,7 +210,7 @@ gets to be really large. #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, @@ -235,7 +235,7 @@ gets to be really large. rsyserr(FERROR, errno, "%s %s failed", --- old/rsync.h +++ new/rsync.h -@@ -493,6 +493,11 @@ struct hlink { +@@ -496,6 +496,11 @@ struct hlink { int hlindex; }; @@ -247,7 +247,7 @@ gets to be really large. #define F_DEV link_u.idev->dev #define F_INODE link_u.idev->inode -@@ -517,8 +522,7 @@ struct file_struct { +@@ -520,8 +525,7 @@ struct file_struct { struct hlink *links; } link_u; time_t modtime; @@ -259,7 +259,7 @@ gets to be really large. }; --- old/uidlist.c +++ new/uidlist.c -@@ -37,6 +37,8 @@ extern int preserve_gid; +@@ -38,6 +38,8 @@ extern int preserve_gid; extern int numeric_ids; extern int am_root; @@ -268,7 +268,7 @@ gets to be really large. struct idlist { struct idlist *next; int id, id2; -@@ -46,6 +48,8 @@ struct idlist { +@@ -47,6 +49,8 @@ struct idlist { static struct idlist *uidlist; static struct idlist *gidlist; @@ -277,7 +277,7 @@ gets to be really large. static struct idlist *add_to_list(struct idlist **root, int id, char *name, int id2) { -@@ -307,7 +311,7 @@ void send_uid_list(int f) +@@ -308,7 +312,7 @@ void send_uid_list(int f) /* recv a complete uid/gid mapping from the peer and map the uid/gid * in the file list to local names */ @@ -286,7 +286,7 @@ gets to be really large. { int id, i; char *name; -@@ -338,11 +342,40 @@ void recv_uid_list(int f, struct file_li +@@ -339,11 +343,40 @@ void recv_uid_list(int f, struct file_li /* Now convert all the uids/gids from sender values to our values. */ if (am_root && preserve_uid && !numeric_ids) {