Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
8e6b4ddb
Commit
8e6b4ddb
authored
Oct 24, 2009
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
A few more --files-from fixes, and an enhanced testsuite for it.
parent
9ccc8f8b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
26 deletions
+46
-26
flist.c
flist.c
+7
-9
io.c
io.c
+24
-17
files-from.test
testsuite/files-from.test
+15
-0
No files found.
flist.c
View file @
8e6b4ddb
...
...
@@ -52,7 +52,6 @@ extern int preserve_hard_links;
extern
int
preserve_devices
;
extern
int
preserve_specials
;
extern
int
missing_args
;
extern
int
sock_f_in
;
extern
int
uid_ndx
;
extern
int
gid_ndx
;
extern
int
eol_nulls
;
...
...
@@ -2052,7 +2051,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
struct
timeval
start_tv
,
end_tv
;
int64
start_write
;
int
use_ff_fd
=
0
;
int
disable_buffering
;
int
disable_buffering
,
reenable_multiplex
=
-
1
;
int
flags
=
recurse
?
FLAG_CONTENT_DIR
:
0
;
int
reading_remotely
=
filesfrom_host
!=
NULL
;
int
rl_flags
=
(
reading_remotely
?
0
:
RL_DUMP_COMMENTS
)
...
...
@@ -2093,12 +2092,11 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
full_fname
(
argv
[
0
]));
exit_cleanup
(
RERR_FILESELECT
);
}
if
(
protocol_version
==
30
)
{
/* Older protocols send the files-from data w/o packaging it in
* multiplexed I/O packets, but protocol 30 messed up and did
* this after starting multiplexing. We'll temporarily switch
if
(
protocol_version
<
31
)
{
/* Older protocols send the files-from data w/o packaging
* it in multiplexed I/O packets, so temporarily switch
* to buffered I/O to match this behavior. */
io_end_multiplex_in
(
MPLX_TO_BUFFERED
);
reenable_multiplex
=
io_end_multiplex_in
(
MPLX_TO_BUFFERED
);
}
use_ff_fd
=
1
;
}
...
...
@@ -2305,8 +2303,8 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
send_file_name
(
f
,
flist
,
fbuf
,
&
st
,
flags
,
NO_FILTERS
);
}
if
(
use_ff_fd
&&
protocol_version
==
3
0
)
io_start_multiplex_in
(
sock_f_in
);
if
(
reenable_multiplex
>=
0
)
io_start_multiplex_in
(
reenable_multiplex
);
gettimeofday
(
&
end_tv
,
NULL
);
stats
.
flist_buildtime
=
(
int64
)(
end_tv
.
tv_sec
-
start_tv
.
tv_sec
)
*
1000
...
...
io.c
View file @
8e6b4ddb
...
...
@@ -94,7 +94,8 @@ static int write_batch_monitor_in = -1;
static
int
write_batch_monitor_out
=
-
1
;
static
int
ff_forward_fd
=
-
1
;
static
char
ff_lastchar
;
static
int
ff_reenable_multiplex
=
-
1
;
static
char
ff_lastchar
=
'\0'
;
static
xbuf
ff_xb
=
EMPTY_XBUF
;
#ifdef ICONV_OPTION
static
xbuf
iconv_buf
=
EMPTY_XBUF
;
...
...
@@ -348,8 +349,8 @@ static void forward_filesfrom_data(void)
ff_forward_fd
=
-
1
;
write_buf
(
iobuf
.
out_fd
,
"
\0\0
"
,
ff_lastchar
?
2
:
1
);
free_xbuf
(
&
ff_xb
);
if
(
protocol_version
==
3
0
)
io_start_multiplex_out
(
iobuf
.
out_fd
);
if
(
ff_reenable_multiplex
>=
0
)
io_start_multiplex_out
(
ff_reenable_multiplex
);
}
return
;
}
...
...
@@ -1016,13 +1017,12 @@ int get_hlink_num(void)
* for recv_file_list() to use. */
void
start_filesfrom_forwarding
(
int
fd
)
{
if
(
protocol_version
==
30
)
{
/* Older protocols send the files-from data w/o packaging it in
* multiplexed I/O packets, but protocol 30 messed up and did
* this after starting multiplexing. We'll temporarily switch
if
(
protocol_version
<
31
&&
OUT_MULTIPLEXED
)
{
/* Older protocols send the files-from data w/o packaging
* it in multiplexed I/O packets, so temporarily switch
* to buffered I/O to match this behavior. */
iobuf
.
msg
.
pos
=
iobuf
.
msg
.
len
=
0
;
/* Be extra sure no messages go out. */
io_end_multiplex_out
(
MPLX_TO_BUFFERED
);
ff_reenable_multiplex
=
io_end_multiplex_out
(
MPLX_TO_BUFFERED
);
}
ff_forward_fd
=
fd
;
...
...
@@ -1135,7 +1135,7 @@ void read_args(int f_in, char *mod_name, char *buf, size_t bufsiz, int rl_nulls,
*
argv_p
=
argv
;
}
int
io_start_buffering_out
(
int
f_out
)
BOOL
io_start_buffering_out
(
int
f_out
)
{
if
(
msgs2stderr
&&
DEBUG_GTE
(
IO
,
2
))
rprintf
(
FINFO
,
"[%s] io_start_buffering_out(%d)
\n
"
,
who_am_i
(),
f_out
);
...
...
@@ -1151,7 +1151,7 @@ int io_start_buffering_out(int f_out)
if
(
iobuf
.
out_fd
==
-
1
)
iobuf
.
out_fd
=
f_out
;
assert
(
f_out
==
iobuf
.
out_fd
);
return
0
;
return
False
;
}
iobuf
.
out
.
size
=
IO_BUFFER_SIZE
*
2
-
4
;
...
...
@@ -1161,10 +1161,10 @@ int io_start_buffering_out(int f_out)
iobuf
.
out
.
pos
=
iobuf
.
out
.
len
=
0
;
iobuf
.
out_fd
=
f_out
;
return
1
;
return
True
;
}
int
io_start_buffering_in
(
int
f_in
)
BOOL
io_start_buffering_in
(
int
f_in
)
{
if
(
msgs2stderr
&&
DEBUG_GTE
(
IO
,
2
))
rprintf
(
FINFO
,
"[%s] io_start_buffering_in(%d)
\n
"
,
who_am_i
(),
f_in
);
...
...
@@ -1173,7 +1173,7 @@ int io_start_buffering_in(int f_in)
if
(
iobuf
.
in_fd
==
-
1
)
iobuf
.
in_fd
=
f_in
;
assert
(
f_in
==
iobuf
.
in_fd
);
return
0
;
return
False
;
}
iobuf
.
in
.
size
=
IO_BUFFER_SIZE
;
...
...
@@ -1184,7 +1184,7 @@ int io_start_buffering_in(int f_in)
iobuf
.
in_fd
=
f_in
;
return
1
;
return
True
;
}
void
io_end_buffering_in
(
BOOL
free_buffers
)
...
...
@@ -2061,8 +2061,10 @@ void io_start_multiplex_in(int fd)
io_start_buffering_in
(
fd
);
}
void
io_end_multiplex_in
(
int
mode
)
int
io_end_multiplex_in
(
int
mode
)
{
int
ret
=
iobuf
.
in_multiplexed
?
iobuf
.
in_fd
:
-
1
;
if
(
msgs2stderr
&&
DEBUG_GTE
(
IO
,
2
))
rprintf
(
FINFO
,
"[%s] io_end_multiplex_in(mode=%d)
\n
"
,
who_am_i
(),
mode
);
...
...
@@ -2073,11 +2075,14 @@ void io_end_multiplex_in(int mode)
assert
(
iobuf
.
raw_input_ends_before
==
0
);
if
(
mode
!=
MPLX_TO_BUFFERED
)
io_end_buffering_in
(
mode
);
return
ret
;
}
/* Stop output multiplexing. */
void
io_end_multiplex_out
(
int
mode
)
int
io_end_multiplex_out
(
int
mode
)
{
int
ret
=
iobuf
.
out_empty_len
?
iobuf
.
out_fd
:
-
1
;
if
(
msgs2stderr
&&
DEBUG_GTE
(
IO
,
2
))
rprintf
(
FINFO
,
"[%s] io_end_multiplex_out(mode=%d)
\n
"
,
who_am_i
(),
mode
);
...
...
@@ -2088,6 +2093,8 @@ void io_end_multiplex_out(int mode)
iobuf
.
out
.
len
=
0
;
iobuf
.
out_empty_len
=
0
;
return
ret
;
}
void
start_write_batch
(
int
fd
)
...
...
testsuite/files-from.test
View file @
8e6b4ddb
...
...
@@ -9,6 +9,8 @@
.
"
$suitedir
/rsync.fns"
SSH
=
"
$scratchdir
/src/support/lsh"
hands_setup
# This list of files skips the contents of "subsubdir" but includes
...
...
@@ -26,5 +28,18 @@ $RSYNC -a --exclude=dir/text --exclude='subsubdir/**' "$fromdir/" "$chkdir/"
checkit
"
$RSYNC
-av --files-from='
$scratchdir
/filelist' '
$scratchdir
' '
$todir
/'"
"
$chkdir
"
"
$todir
"
for
filehost
in
''
'localhost:'
;
do
for
srchost
in
''
'localhost:'
;
do
if
[
-
z
"
$srchost
"
];
then
desthost
=
'localhost:'
else
desthost
=
''
fi
rm
-
rf
"
$todir
"
checkit
"
$RSYNC
-avse '
$SSH
' --rsync-path='
$RSYNC
' --files-from='
$filehost$scratchdir
/filelist' '
$srchost$scratchdir
' '
$desthost$todir
/'"
"
$chkdir
"
"
$todir
"
done
done
# The script would have aborted on error, so getting here means we've won.
exit
0
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment