summaryrefslogtreecommitdiff
path: root/community/librsync
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
committerParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
commit415856bdd4f48ab4f2732996f0bae58595092bbe (patch)
treeede2018b591f6dfb477fe9341ba17b9bc000fab9 /community/librsync
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'community/librsync')
-rw-r--r--community/librsync/ChangeLog2
-rw-r--r--community/librsync/PKGBUILD35
-rw-r--r--community/librsync/lfs-overflow.patch55
3 files changed, 92 insertions, 0 deletions
diff --git a/community/librsync/ChangeLog b/community/librsync/ChangeLog
new file mode 100644
index 000000000..4cdab3f13
--- /dev/null
+++ b/community/librsync/ChangeLog
@@ -0,0 +1,2 @@
+2007-06-28 tardo <tardo@nagi-fanboi.net>
+* Recompiled with --with-pic to fix relocation errors
diff --git a/community/librsync/PKGBUILD b/community/librsync/PKGBUILD
new file mode 100644
index 000000000..d0fd33cf3
--- /dev/null
+++ b/community/librsync/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 11387 2010-02-10 04:50:34Z foutrelis $
+# Maintainer: Evangelos Foutras <foutrelis@gmail.com>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+# Contributor: Christoph 'delmonico' Neuroth <delmonico@gmx.net>
+
+pkgname=librsync
+pkgver=0.9.7
+pkgrel=5
+pkgdesc="A free software library that implements the rsync remote-delta algorithm (rdiff)"
+arch=('i686' 'x86_64')
+url="http://librsync.sourceforge.net/"
+license=('GPL')
+depends=('popt' 'zlib' 'bzip2')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/librsync/$pkgname-$pkgver.tar.gz
+ lfs-overflow.patch)
+md5sums=('24cdb6b78f45e0e83766903fd4f6bc84'
+ 'e18536482c0a32e7004c46eac6a53b2d')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # Patch for large files (https://bugzilla.redhat.com/show_bug.cgi?id=207940)
+ patch -Np1 -i "$srcdir/lfs-overflow.patch" || return 1
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-shared
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install || return 1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/librsync/lfs-overflow.patch b/community/librsync/lfs-overflow.patch
new file mode 100644
index 000000000..714fbaa84
--- /dev/null
+++ b/community/librsync/lfs-overflow.patch
@@ -0,0 +1,55 @@
+Files over 4 Gig in size encountered an error resulting in an unsuccessful copy as
+per (upstream) Bug Request ID: 1110812.
+
+The assignment 'len = job->basis_len' sometimes overflows. Made changes so that
+assignment is done only when appropriate.
+
+rs_mdfour variables B and C were observed to overflow their 'int' definition.
+This has been changed to 'unsigned int', which is now consistent with like coding
+in the openssl package.
+
+--- librsync-0.9.7/mdfour.h 2004-02-08 00:17:57.000000000 +0100
++++ librsync-0.9.7/mdfour.h.lfs_overflow 2006-03-10 11:44:10.000000000 +0100
+@@ -1,7 +1,7 @@
+ /*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*-
+ *
+ * librsync -- the library for network deltas
+- * $Id: mdfour.h,v 1.7 2003/10/17 16:15:21 abo Exp $
++ * $Id: mdfour.h,v 1.8 2006/03/10 10:44:10 abo Exp $
+ *
+ * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org>
+ * Copyright (C) 2002, 2003 by Donovan Baarda <abo@minkirri.apana.org.au>
+@@ -24,7 +24,7 @@
+ #include "types.h"
+
+ struct rs_mdfour {
+- int A, B, C, D;
++ unsigned int A, B, C, D;
+ #if HAVE_UINT64
+ uint64_t totalN;
+ #else
+--- librsync-0.9.7/patch.c 2004-09-17 23:35:50.000000000 +0200
++++ librsync-0.9.7/patch.c.lfs_overflow 2006-03-10 11:44:10.000000000 +0100
+@@ -1,7 +1,7 @@
+ /*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*-
+ *
+ * librsync -- the library for network deltas
+- * $Id: patch.c,v 1.30 2004/09/10 02:48:58 mbp Exp $
++ * $Id: patch.c,v 1.31 2006/03/10 10:44:10 abo Exp $
+ *
+ * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org>
+ *
+@@ -214,12 +214,9 @@
+ void *buf, *ptr;
+ rs_buffers_t *buffs = job->stream;
+
+- len = job->basis_len;
+-
+ /* copy only as much as will fit in the output buffer, so that we
+ * don't have to block or store the input. */
+- if (len > buffs->avail_out)
+- len = buffs->avail_out;
++ len = (buffs->avail_out < job->basis_len) ? buffs->avail_out : job->basis_len;
+
+ if (!len)
+ return RS_BLOCKED;