diff options
author | Jeremy Allison <jra@samba.org> | 2004-03-18 23:45:15 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2004-03-18 23:45:15 +0000 |
commit | 7942c2826b9f1f16246ef284009572427ec44909 (patch) | |
tree | 6fc8c84902831888d9ff5c79e9482064edc9971e /source3 | |
parent | 357998ddbdeb2fae0a30c578e747154fec22c180 (diff) | |
download | samba-7942c2826b9f1f16246ef284009572427ec44909.tar.gz samba-7942c2826b9f1f16246ef284009572427ec44909.tar.bz2 samba-7942c2826b9f1f16246ef284009572427ec44909.zip |
Merge from HEAD for Amanda group.
Apply Craig Barratt's fixes to allow multiple exlusion files and patterns.
Jeremy.
(This used to be commit 0272fac8ca40b3d4ea4de8ac8a2e371d450d12e6)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/client/clitar.c | 4 | ||||
-rw-r--r-- | 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 f38d6fe91a..e43b3e4cc5 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 3a8d627ee9..10d224baab 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. *********************************************************/ |