--- samba-3.0.0rc2.orig/source/client/clitar.c Thu Aug 28 14:42:42 2003 +++ samba-3.0.0rc2/source/client/clitar.c Sun Aug 31 20:38:16 2003 @@ -797,7 +797,7 @@ #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; @@ -1148,7 +1148,7 @@ #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 -bur samba-3.0.0rc2.orig/source/lib/util.c samba-3.0.0rc2/source/lib/util.c --- samba-3.0.0rc2.orig/source/lib/util.c Fri Aug 15 13:39:55 2003 +++ samba-3.0.0rc2/source/lib/util.c Sun Aug 31 20:46:56 2003 @@ -2343,6 +2343,20 @@ 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. *********************************************************/