summaryrefslogtreecommitdiffstats
path: root/source3/client/clitar.c
diff options
context:
space:
mode:
authorAurélien Aptel <aurelien.aptel@gmail.com>2013-07-16 16:16:29 +0200
committerAndreas Schneider <asn@samba.org>2014-02-19 18:22:28 +0100
commit6d0ff6d2f0366e2b8f6d5dc3b15ddb3abb57163a (patch)
tree27e19ec363a46460fdf33231d76fd4569ac303b2 /source3/client/clitar.c
parentb8258540055e01fcb2d26776be4b5914b00b5a8d (diff)
downloadsamba-6d0ff6d2f0366e2b8f6d5dc3b15ddb3abb57163a.tar.gz
samba-6d0ff6d2f0366e2b8f6d5dc3b15ddb3abb57163a.tar.xz
samba-6d0ff6d2f0366e2b8f6d5dc3b15ddb3abb57163a.zip
clitar.c: fix creation exclusion, don't reverse in exclusion mode
Signed-off-by: Aurélien Aptel <aurelien.aptel@gmail.com> Reviewed-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/client/clitar.c')
-rw-r--r--source3/client/clitar.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index c1195e9514b..d3d17d88417 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -352,7 +352,8 @@ static bool tar_create_skip_path(struct tar *t,
const bool skip = true;
const mode_t mode = finfo->mode;
const bool isdir = mode & FILE_ATTRIBUTE_DIRECTORY;
- bool in;
+ const bool exclude = t->mode.selection == TAR_EXCLUDE;
+ bool in = true;
if (!isdir) {
@@ -374,10 +375,12 @@ static bool tar_create_skip_path(struct tar *t,
/* 3. is it in the selection list? */
- in = t->path_list_size > 0 ? tar_path_in_list(t, fullpath, isdir) : true;
+ if (t->path_list_size > 0) {
+ in = tar_path_in_list(t, fullpath, isdir && !exclude);
+ }
/* inverse result if in exclude mode */
- if (t->mode.selection == TAR_EXCLUDE) {
+ if (exclude) {
in = !in;
}