aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2007-10-13 05:23:34 +0000
committerWayne Davison <wayned@samba.org>2007-10-13 05:23:34 +0000
commite5f35681e6f88d1b716b19ff7c9c77991207df08 (patch)
tree602230e71a201cec508032b2b700cddec407c763 /io.c
parent32b9011ae97cb4be9dbd6d1991a9b633b64ce6a0 (diff)
downloadandroid_external_rsync-e5f35681e6f88d1b716b19ff7c9c77991207df08.tar.gz
android_external_rsync-e5f35681e6f88d1b716b19ff7c9c77991207df08.tar.bz2
android_external_rsync-e5f35681e6f88d1b716b19ff7c9c77991207df08.zip
Forward MSG_IO_ERROR to the generator so that it can disable deletions.
Diffstat (limited to 'io.c')
-rw-r--r--io.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/io.c b/io.c
index 3ef6f127..a19017a6 100644
--- a/io.c
+++ b/io.c
@@ -388,6 +388,12 @@ static void read_msg_fd(void)
goto invalid_msg;
flist_eof = 1;
break;
+ case MSG_IO_ERROR:
+ if (len != 4)
+ goto invalid_msg;
+ readfd(fd, buf, len);
+ io_error |= IVAL(buf, 0);
+ break;
case MSG_DELETED:
if (len >= (int)sizeof buf || !am_generator)
goto invalid_msg;
@@ -1041,6 +1047,7 @@ static int readfd_unbuffered(int fd, char *buf, size_t len)
if (msg_bytes != 4)
goto invalid_msg;
read_loop(fd, line, msg_bytes);
+ send_msg_int(MSG_IO_ERROR, IVAL(line, 0));
io_error |= IVAL(line, 0);
break;
case MSG_DELETED: