Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Tweaked a couple things in try_dests_reg().
[rsync/rsync.git]
/
io.c
diff --git
a/io.c
b/io.c
index
1513ae9
..
5b87be6
100644
(file)
--- a/
io.c
+++ b/
io.c
@@
-1,8
+1,10
@@
-/* -*- c-file-style: "linux" -*-
+/*
+ * Socket and pipe I/O utilities used in rsync.
*
*
- * Copyright (C) 1996-2001 by Andrew Tridgell
- * Copyright (C) Paul Mackerras 1996
- * Copyright (C) 2001, 2002 by Martin Pool <mbp@samba.org>
+ * Copyright (C) 1996-2001 Andrew Tridgell
+ * Copyright (C) 1996 Paul Mackerras
+ * Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
+ * Copyright (C) 2003, 2004, 2005, 2006 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-14,25
+16,17
@@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- *
along with this program; if not, write to the Free Software
- *
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139
, USA.
+ * You should have received a copy of the GNU General Public License
along
+ *
with this program; if not, write to the Free Software Foundation, Inc.,
+ *
51 Franklin Street - Fifth Floor, Boston, MA 02110-1301
, USA.
*/
*/
-/**
- * @file io.c
- *
- * Socket and pipe I/O utilities used in rsync.
- *
- * rsync provides its own multiplexing system, which is used to send
- * stderr and stdout over a single socket. We need this because
- * stdout normally carries the binary data stream, and stderr all our
- * error messages.
+/* Rsync provides its own multiplexing system, which is used to send
+ * stderr and stdout over a single socket.
*
* For historical reasons this is off during the start of the
* connection, but it's switched on quite early using
*
* For historical reasons this is off during the start of the
* connection, but it's switched on quite early using
- * io_start_multiplex_out() and io_start_multiplex_in().
- **/
+ * io_start_multiplex_out() and io_start_multiplex_in(). */
#include "rsync.h"
#include "rsync.h"
@@
-273,10
+267,7
@@
static void read_msg_fd(void)
exit_cleanup(RERR_STREAMIO);
}
read_loop(fd, buf, len);
exit_cleanup(RERR_STREAMIO);
}
read_loop(fd, buf, len);
- if (defer_forwarding_messages)
- msg_list_add(&msg2sndr, MSG_DELETED, buf, len);
- else
- io_multiplex_write(MSG_DELETED, buf, len);
+ send_msg(MSG_DELETED, buf, len);
break;
case MSG_SUCCESS:
if (len != 4 || !am_generator) {
break;
case MSG_SUCCESS:
if (len != 4 || !am_generator) {
@@
-286,10
+277,7
@@
static void read_msg_fd(void)
read_loop(fd, buf, len);
if (remove_sent_files) {
decrement_active_files(IVAL(buf,0));
read_loop(fd, buf, len);
if (remove_sent_files) {
decrement_active_files(IVAL(buf,0));
- if (defer_forwarding_messages)
- msg_list_add(&msg2sndr, MSG_SUCCESS, buf, len);
- else
- io_multiplex_write(MSG_SUCCESS, buf, len);
+ send_msg(MSG_SUCCESS, buf, len);
}
if (preserve_hard_links)
flist_ndx_push(&hlink_list, IVAL(buf,0));
}
if (preserve_hard_links)
flist_ndx_push(&hlink_list, IVAL(buf,0));
@@
-309,10
+297,7
@@
static void read_msg_fd(void)
if (n >= sizeof buf)
n = sizeof buf - 1;
read_loop(fd, buf, n);
if (n >= sizeof buf)
n = sizeof buf - 1;
read_loop(fd, buf, n);
- if (am_generator && am_server && defer_forwarding_messages)
- msg_list_add(&msg2sndr, tag, buf, n);
- else
- rwrite((enum logcode)tag, buf, n);
+ rwrite(tag, buf, n);
len -= n;
}
break;
len -= n;
}
break;
@@
-386,14
+371,19
@@
static int msg2genr_flush(int flush_it_all)
return 1;
}
return 1;
}
-
void
send_msg(enum msgcode code, char *buf, int len)
+
int
send_msg(enum msgcode code, char *buf, int len)
{
if (msg_fd_out < 0) {
{
if (msg_fd_out < 0) {
- io_multiplex_write(code, buf, len);
- return;
+ if (!defer_forwarding_messages)
+ return io_multiplex_write(code, buf, len);
+ if (!io_multiplexing_out)
+ return 0;
+ msg_list_add(&msg2sndr, code, buf, len);
+ return 1;
}
msg_list_add(&msg2genr, code, buf, len);
msg2genr_flush(NORMAL_FLUSH);
}
msg_list_add(&msg2genr, code, buf, len);
msg2genr_flush(NORMAL_FLUSH);
+ return 1;
}
int get_redo_num(int itemizing, enum logcode code)
}
int get_redo_num(int itemizing, enum logcode code)
@@
-1001,7
+991,7
@@
void write_sum_head(int f, struct sum_struct *sum)
static void sleep_for_bwlimit(int bytes_written)
{
static struct timeval prior_tv;
static void sleep_for_bwlimit(int bytes_written)
{
static struct timeval prior_tv;
- static long total_written = 0;
+ static long total_written = 0;
struct timeval tv, start_tv;
long elapsed_usec, sleep_usec;
struct timeval tv, start_tv;
long elapsed_usec, sleep_usec;
@@
-1010,7
+1000,7
@@
static void sleep_for_bwlimit(int bytes_written)
if (!bwlimit_writemax)
return;
if (!bwlimit_writemax)
return;
- total_written += bytes_written;
+ total_written += bytes_written;
gettimeofday(&start_tv, NULL);
if (prior_tv.tv_sec) {
gettimeofday(&start_tv, NULL);
if (prior_tv.tv_sec) {