X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/52d3e10613fe75f02bebf30d66a768c815a40aae..bb24028f51bac18097e688c1459924f648bc407e:/generator.c diff --git a/generator.c b/generator.c index 3552887e..84264dcc 100644 --- a/generator.c +++ b/generator.c @@ -52,12 +52,19 @@ static int skip_file(char *fname, return 0; } if (link_dest) { - if((st->st_mode & ~_S_IFMT) != (file->mode & ~_S_IFMT)) { + extern int preserve_perms; + extern int preserve_uid; + extern int preserve_gid; + + if((preserve_perms + && st->st_mode & ~_S_IFMT) != (file->mode & ~_S_IFMT)) return 0; - } - if (st->st_uid != file->uid || st->st_gid != file->gid) { + + if (preserve_uid && st->st_uid != file->uid) + return 0; + + if (preserve_gid && st->st_gid != file->gid) return 0; - } } /* if always checksum is set then we use the checksum instead