using rsync 3.0.0 CVS version

Paul Slootman paul at debian.org
Tue Jan 23 11:55:47 GMT 2007


On Mon 22 Jan 2007, Paul Slootman wrote:
> 
> It's the same binary, compiled from rsync-HEAD-20070120-2211GMT.

I tried again with current cvs (with the 1.194 version of receiver.c),
and it still hangs when transferring an empty directory (it is created
on the receiver though).  A local transfer (rsync -a empty newempty)
works fine.

One other point: on amd64 I get a couple of warnings:

gcc -std=gnu99 -I. -I. -g -O2 -DHAVE_CONFIG_H -Wall -W  -c flist.c -o flist.o
flist.c: In function 'send_file_entry':
flist.c:421: warning: cast from pointer to integer of different size
flist.c:423: warning: cast to pointer from integer of different size
flist.c: In function 'recv_file_entry':
flist.c:831: warning: cast from pointer to integer of different size
flist.c:834: warning: cast to pointer from integer of different size

Pointers are 64 bits on amd64 and other 64 bit architectures...
These are trivially fixed with additional casts (gcc complains when the
sizes are different, so first cast to/from the same size integer, and
then cast pointer from/to integer); I've seen lots of these while
porting a lot of stuff to alpha, which has been 64 bits for more than 10
years:

--- flist.c.orig	2007-01-10 02:49:35.000000000 +0100
+++ flist.c	2007-01-23 12:45:26.000000000 +0100
@@ -418,9 +418,9 @@
 	if (tmp_dev != 0) {
 		if (protocol_version >= 30) {
 			struct idev_node *np = idev_node(tmp_dev, tmp_ino);
-			first_hlink_ndx = (int32)np->data - 1;
+			first_hlink_ndx = (int32)(long)np->data - 1;
 			if (first_hlink_ndx < 0) {
-				np->data = (void*)(ndx + 1);
+				np->data = (void*)(long)(ndx + 1);
 				flags |= XMIT_HLINK_FIRST;
 			}
 			flags |= XMIT_HLINKED;
@@ -828,10 +828,10 @@
 				ino = read_longint(f);
 			}
 			np = idev_node(dev, ino);
-			ndx = (int32)np->data - 1;
+			ndx = (int32)(long)np->data - 1;
 			if (ndx < 0) {
 				ndx = cnt++;
-				np->data = (void*)cnt;
+				np->data = (void*)(long)cnt;
 			}
 			F_HL_GNUM(file) = ndx;
 		}


Paul Slootman


More information about the rsync mailing list