diff options
author | Richard Sharpe <sharpe@samba.org> | 2004-03-18 22:29:54 +0000 |
---|---|---|
committer | Richard Sharpe <sharpe@samba.org> | 2004-03-18 22:29:54 +0000 |
commit | 00e8b6d5ce02d021d23bd6b0816504604756b825 (patch) | |
tree | addca88533371eef38866853341382149465eb51 | |
parent | 2332bebd9fabc32dbc2756347338dbecc06e527b (diff) | |
download | samba-00e8b6d5ce02d021d23bd6b0816504604756b825.tar.gz samba-00e8b6d5ce02d021d23bd6b0816504604756b825.tar.bz2 samba-00e8b6d5ce02d021d23bd6b0816504604756b825.zip |
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)
-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. *********************************************************/ |