aboutsummaryrefslogtreecommitdiff
path: root/net/rsync
diff options
context:
space:
mode:
authorEmanuel Haupt <ehaupt@FreeBSD.org>2013-01-11 08:36:23 +0000
committerEmanuel Haupt <ehaupt@FreeBSD.org>2013-01-11 08:36:23 +0000
commitec683a2cff38fb7e2de930a9a88956a80427040e (patch)
tree9e4e853f3d021fa1bcb05f24405469dfcd8c0186 /net/rsync
parent994b61ac4ab5a95f841bda0f45e44a154e3205c5 (diff)
downloadports-ec683a2cff38fb7e2de930a9a88956a80427040e.tar.gz
ports-ec683a2cff38fb7e2de930a9a88956a80427040e.zip
Notes
Diffstat (limited to 'net/rsync')
-rw-r--r--net/rsync/Makefile4
-rw-r--r--net/rsync/files/extrapatch-syscall.c20
2 files changed, 23 insertions, 1 deletions
diff --git a/net/rsync/Makefile b/net/rsync/Makefile
index 8c5c01f32d8a..3e31fd5b2b31 100644
--- a/net/rsync/Makefile
+++ b/net/rsync/Makefile
@@ -3,7 +3,7 @@
PORTNAME= rsync
PORTVERSION= 3.0.9
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= net ipv6
MASTER_SITES= http://rsync.samba.org/ftp/%SUBDIR%/ \
ftp://ftp.samba.org/pub/%SUBDIR%/ \
@@ -85,6 +85,8 @@ CONFIGURE_ENV+= ac_cv_header_iconv_h=no
.if ${PORT_OPTIONS:MFLAGS}
PATCH_STRIP= -p1
EXTRA_PATCHES+= ${WRKSRC}/patches/fileflags.diff
+# https://bugzilla.samba.org/show_bug.cgi?id=8941
+EXTRA_PATCHES+= ${FILESDIR}/extrapatch-syscall.c
.endif
.if ${PORT_OPTIONS:MRENAMED}
diff --git a/net/rsync/files/extrapatch-syscall.c b/net/rsync/files/extrapatch-syscall.c
new file mode 100644
index 000000000000..20e83183e9f4
--- /dev/null
+++ b/net/rsync/files/extrapatch-syscall.c
@@ -0,0 +1,20 @@
+--- syscall.c.orig 2013-01-10 18:53:44.000000000 -0700
++++ syscall.c 2013-01-10 18:53:56.000000000 -0700
+@@ -114,8 +114,16 @@
+ #ifdef SUPPORT_FORCE_CHANGE
+ if (force_change && (errno == EPERM || errno == EACCES)) {
+ char parent[MAXPATHLEN];
++ int parent_flags;
+ int saved_errno = errno;
+- int parent_flags = make_parentdir_mutable(fname2, force_change, parent, sizeof parent);
++ int file_flags = make_mutable(fname1, NULL, NO_FFLAGS, force_change);
++ if (file_flags) {
++ int ret = link(fname1, fname2);
++ undo_make_mutable(fname1, file_flags);
++ if (ret == 0)
++ return 0;
++ }
++ parent_flags = make_parentdir_mutable(fname2, force_change, parent, sizeof parent);
+ if (parent_flags) {
+ int ret = link(fname1, fname2);
+ undo_make_mutable(parent, parent_flags);