From 00e8b6d5ce02d021d23bd6b0816504604756b825 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Thu, 18 Mar 2004 22:29:54 +0000 Subject: [PATCH] Apply Craig Barratt's fixes to allow multiple exlusion files and patterns. Much of this was applied by hand because of the changes in the code. However, it builds and smbclient seems to work still. The Amanda folks are testing and it seems to work there as well. (This used to be commit 10d05b57c5c66718fb1ca476f7214087ddae29ee) --- source3/client/clitar.c | 4 ++-- source3/lib/util.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/source3/client/clitar.c b/source3/client/clitar.c index f38d6fe91a5..e43b3e4cc50 100644 --- a/source3/client/clitar.c +++ b/source3/client/clitar.c @@ -800,7 +800,7 @@ static void do_tar(file_info *finfo) #ifdef HAVE_REGEX_H (tar_re_search && !regexec(preg, exclaim, 0, NULL, 0))) { #else - (tar_re_search && mask_match(exclaim, cliplist[0], True))) { + (tar_re_search && mask_match_list(exclaim, cliplist, clipn, True))) { #endif DEBUG(3,("Skipping file %s\n", exclaim)); return; @@ -1153,7 +1153,7 @@ static void do_tarput(void) #ifdef HAVE_REGEX_H (tar_re_search && !regexec(preg, finfo.name, 0, NULL, 0))); #else - (tar_re_search && mask_match(finfo.name, cliplist[0], True))); + (tar_re_search && mask_match_list(finfo.name, cliplist, clipn, True))); #endif DEBUG(5, ("Skip = %i, cliplist=%s, file=%s\n", skip, (cliplist?cliplist[0]:NULL), finfo.name)); diff --git a/source3/lib/util.c b/source3/lib/util.c index 3a8d627ee9e..10d224baabf 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -2320,6 +2320,20 @@ BOOL mask_match(const char *string, char *pattern, BOOL is_case_sensitive) return ms_fnmatch(pattern, string, Protocol, is_case_sensitive) == 0; } +/******************************************************************* + A wrapper that handles a list of patters and calls mask_match() + on each. Returns True if any of the patterns match. +*******************************************************************/ + +BOOL mask_match_list(const char *string, char **list, int listLen, BOOL is_case_sensitive) +{ + while (listLen-- > 0) { + if (mask_match(string, *list++, is_case_sensitive)) + return True; + } + return False; +} + /********************************************************* Recursive routine that is called by unix_wild_match. *********************************************************/ -- 2.11.4.GIT