# ChangeLog for net-misc/rsync
-# Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/ChangeLog,v 1.112 2006/12/16 08:37:09 vapier Exp $
+# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/ChangeLog,v 1.113 2007/02/03 21:35:15 vapier Exp $
+
+*rsync-2.6.9-r2 (03 Feb 2007)
+
+ 03 Feb 2007; Mike Frysinger <vapier@gentoo.org>
+ +files/rsync-2.6.9-stats-fix.patch, +rsync-2.6.9-r2.ebuild:
+ Add fix from upstream for file stats #165134 by Lloeki.
*rsync-2.6.9-r1 (16 Dec 2006)
--- /dev/null
+http://bugs.gentoo.org/165121
+
+--- old/flist.c
++++ new/flist.c
+@@ -476,6 +476,9 @@ static void send_file_entry(struct file_
+ }
+
+ strlcpy(lastname, fname, MAXPATHLEN);
++
++ if (S_ISREG(mode) || S_ISLNK(mode))
++ stats.total_size += file->length;
+ }
+
+ static struct file_struct *receive_file_entry(struct file_list *flist,
+@@ -699,6 +702,9 @@ static struct file_struct *receive_file_
+ read_buf(f, sum, checksum_len);
+ }
+
++ if (S_ISREG(mode) || S_ISLNK(mode))
++ stats.total_size += file_length;
++
+ return file;
+ }
+
+@@ -938,9 +944,6 @@ struct file_struct *make_file(char *fnam
+ file->mode = save_mode;
+ }
+
+- if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode))
+- stats.total_size += st.st_size;
+-
+ return file;
+ }
+
+@@ -1357,9 +1360,6 @@ struct file_list *recv_file_list(int f)
+ flags |= read_byte(f) << 8;
+ file = receive_file_entry(flist, flags, f);
+
+- if (S_ISREG(file->mode) || S_ISLNK(file->mode))
+- stats.total_size += file->length;
+-
+ flist->files[flist->count++] = file;
+
+ maybe_emit_filelist_progress(flist->count);
+--- old/io.c
++++ new/io.c
+@@ -245,10 +245,15 @@ static void read_msg_fd(void)
+
+ switch (tag) {
+ case MSG_DONE:
+- if (len != 0 || !am_generator) {
++ if ((len != 0 && len != 8) || !am_generator) {
+ rprintf(FERROR, "invalid message %d:%d\n", tag, len);
+ exit_cleanup(RERR_STREAMIO);
+ }
++ if (len) {
++ read_loop(fd, buf, 8);
++ stats.total_read = IVAL(buf, 0)
++ | (((int64)IVAL(buf, 4)) << 32);
++ }
+ flist_ndx_push(&redo_list, -1);
+ break;
+ case MSG_REDO:
+--- old/main.c
++++ new/main.c
+@@ -710,6 +710,7 @@ static int do_recv(int f_in,int f_out,st
+ }
+
+ if (pid == 0) {
++ char numbuf[8];
+ close(error_pipe[0]);
+ if (f_in != f_out)
+ close(f_out);
+@@ -724,7 +725,9 @@ static int do_recv(int f_in,int f_out,st
+ io_flush(FULL_FLUSH);
+ handle_stats(f_in);
+
+- send_msg(MSG_DONE, "", 0);
++ SIVAL(numbuf, 0, (stats.total_read & 0xFFFFFFFF));
++ SIVAL(numbuf, 4, ((stats.total_read >> 32) & 0xFFFFFFFF));
++ send_msg(MSG_DONE, numbuf, 8);
+ io_flush(FULL_FLUSH);
+
+ /* Handle any keep-alive packets from the post-processing work
--- /dev/null
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.6.9-r2.ebuild,v 1.1 2007/02/03 21:35:15 vapier Exp $
+
+inherit eutils flag-o-matic toolchain-funcs
+
+DESCRIPTION="File transfer program to keep remote files into sync"
+HOMEPAGE="http://rsync.samba.org/"
+SRC_URI="http://rsync.samba.org/ftp/rsync/${P/_/}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+IUSE="acl ipv6 static xinetd"
+
+RDEPEND=">=dev-libs/popt-1.5
+ acl? ( kernel_linux? ( sys-apps/acl ) )"
+DEPEND="${RDEPEND}
+ >=sys-apps/portage-2.0.51"
+
+S=${WORKDIR}/${P/_/}
+
+src_unpack() {
+ unpack ${P/_/}.tar.gz
+ cd "${S}"
+ if use acl ; then
+ epatch patches/{acls,xattrs}.diff
+ epatch "${FILESDIR}"/${P}-delete-acls-xattr.patch
+ ./prepare-source || die
+ fi
+ epatch "${FILESDIR}"/${P}-stats-fix.patch #165121
+}
+
+src_compile() {
+ [[ $(gcc-version) == "2.95" ]] && append-ldflags -lpthread
+ use static && append-ldflags -static
+
+ econf \
+ --without-included-popt \
+ $(use_enable acl acl-support) \
+ $(use_enable acl xattr-support) \
+ $(use_enable ipv6) \
+ --with-rsyncd-conf=/etc/rsyncd.conf \
+ || die
+ emake || die "emake failed"
+}
+
+pkg_preinst() {
+ if [[ -e ${ROOT}/etc/rsync/rsyncd.conf ]] && [[ ! -e ${ROOT}/etc/rsyncd.conf ]] ; then
+ mv "${ROOT}"/etc/rsync/rsyncd.conf "${ROOT}"/etc/rsyncd.conf
+ rm -f "${ROOT}"/etc/rsync/.keep
+ rmdir "${ROOT}"/etc/rsync >& /dev/null
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "make install failed"
+ newconfd "${FILESDIR}"/rsyncd.conf.d rsyncd
+ newinitd "${FILESDIR}"/rsyncd.init.d rsyncd
+ dodoc NEWS OLDNEWS README TODO tech_report.tex
+ insinto /etc
+ doins "${FILESDIR}"/rsyncd.conf
+ if use xinetd ; then
+ insinto /etc/xinetd.d
+ newins "${FILESDIR}"/rsyncd.xinetd rsyncd
+ fi
+}
+
+pkg_postinst() {
+ ewarn "The rsyncd.conf file has been moved for you to /etc/rsyncd.conf"
+ echo
+ ewarn "Please make sure you do NOT disable the rsync server running"
+ ewarn "in a chroot. Please check /etc/rsyncd.conf and make sure"
+ ewarn "it says: use chroot = yes"
+}