diff options
author | Wayne Davison <wayned@samba.org> | 2008-11-09 21:37:04 -0800 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2008-11-09 21:39:08 -0800 |
commit | b8a1fd6404054c8cea348e445d666050520e899b (patch) | |
tree | 24892507bb09c9ad7599bf3330f385e76addaa6f | |
parent | 3082dffbe25505db86d16a938f92b77c84ffb1fd (diff) | |
download | rsync-b8a1fd6404054c8cea348e445d666050520e899b.tar.gz |
Fixed the use of a dot-dir path (foo/./bar) inside of a files-from file.
-rw-r--r-- | flist.c | 6 | ||||
-rw-r--r-- | testsuite/files-from.test | 30 |
2 files changed, 33 insertions, 3 deletions
@@ -1962,9 +1962,6 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) start_write = stats.total_written; gettimeofday(&start_tv, NULL); - if (!orig_dir) - orig_dir = strdup(curr_dir); - if (relative_paths && protocol_version >= 30) implied_dirs = 1; /* We send flagged implied dirs */ @@ -1990,6 +1987,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) use_ff_fd = 1; } + if (!orig_dir) + orig_dir = strdup(curr_dir); + while (1) { char fbuf[MAXPATHLEN], *fn, name_type; diff --git a/testsuite/files-from.test b/testsuite/files-from.test new file mode 100644 index 00000000..ea202025 --- /dev/null +++ b/testsuite/files-from.test @@ -0,0 +1,30 @@ +#!/bin/sh + +# Copyright (C) 2008 by Wayne Davison <wayned@samba.org> + +# This program is distributable under the terms of the GNU GPL (see +# COPYING). + +# Test that --files-from=FILE works right. + +. "$suitedir/rsync.fns" + +hands_setup + +# This list of files skips the contents of "subsubdir" but includes +# the contents of "subsubdir2" due to its trailing slash. +cat >"$scratchdir/filelist" <<EOT +from/./ +from/./dir/subdir +from/./dir/subdir/subsubdir +from/./dir/subdir/subsubdir2/ +from/./dir/subdir/foobar.baz +EOT + +# Create a chkdir without the content that we expect to be omitted. +$RSYNC -a --exclude=dir/text --exclude='subsubdir/**' "$fromdir/" "$chkdir/" + +checkit "$RSYNC -av --files-from='$scratchdir/filelist' '$scratchdir' '$todir/'" "$chkdir" "$todir" + +# The script would have aborted on error, so getting here means we've won. +exit 0 |