* Copyright (C) 1996-2001 by Andrew Tridgell <tridge@samba.org>
* Copyright (C) 1996 by Paul Mackerras
* Copyright (C) 2002 by Martin Pool
* Copyright (C) 1996-2001 by Andrew Tridgell <tridge@samba.org>
* Copyright (C) 1996 by Paul Mackerras
* Copyright (C) 2002 by Martin Pool
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
if (!ret->pattern) out_of_memory("make_exclude");
if (strpbrk(pattern, "*[?")) {
if (!ret->pattern) out_of_memory("make_exclude");
if (strpbrk(pattern, "*[?")) {
- ret->regular_exp = 1;
- ret->fnmatch_flags = FNM_PATHNAME;
- if (strstr(pattern, "**")) {
- static int tested;
- if (!tested) {
- tested = 1;
- if (fnmatch("a/b/*", "a/b/c/d", FNM_PATHNAME)==0) {
- rprintf(FERROR,"WARNING: fnmatch FNM_PATHNAME is broken on your system\n");
- }
- }
- ret->fnmatch_flags = 0;
- }
+ ret->regular_exp = 1;
+ ret->fnmatch_flags = FNM_PATHNAME;
+ if (strstr(pattern, "**")) {
+ static int tested;
+ if (!tested) {
+ tested = 1;
+ if (fnmatch("a/b/*","a/b/c/d",FNM_PATHNAME)==0)
+ rprintf(FERROR,"WARNING: fnmatch FNM_PATHNAME is broken on your system\n");
+ }
+ ret->fnmatch_flags = 0;
+ }
char *pattern = ex->pattern;
if (ex->local && (p=strrchr(name,'/')))
char *pattern = ex->pattern;
if (ex->local && (p=strrchr(name,'/')))
strcmp(name+(l1-l2),pattern) == 0 &&
(l1==l2 || (!match_start && name[l1-(l2+1)] == '/'))) {
return 1;
strcmp(name+(l1-l2),pattern) == 0 &&
(l1==l2 || (!match_start && name[l1-(l2+1)] == '/'))) {
return 1;
- /* If a trailing slash is present to match only directories,
- * then it is stripped out by make_exclude. So as a special
- * case we add it back in here. */
-
- if (verbose >= 2)
- rprintf(FINFO, "%s %s %s because of pattern %s%s\n",
- ent->include ? "including" : "excluding",
- S_ISDIR(st->st_mode) ? "directory" : "file",
- name, ent->pattern,
- ent->directory ? "/" : "");
+ /* If a trailing slash is present to match only directories,
+ * then it is stripped out by make_exclude. So as a special
+ * case we add it back in here. */
+
+ if (verbose >= 2)
+ rprintf(FINFO, "%s %s %s because of pattern %s%s\n",
+ ent->include ? "including" : "excluding",
+ S_ISDIR(st->st_mode) ? "directory" : "file",
+ name, ent->pattern,
+ ent->directory ? "/" : "");
if (name && (name[0] == '.') && !name[1])
/* never exclude '.', even if somebody does --exclude '*' */
if (name && (name[0] == '.') && !name[1])
/* never exclude '.', even if somebody does --exclude '*' */
if (!*list || !((*list)[len] = make_exclude(pattern, include)))
out_of_memory("add_exclude");
if (!*list || !((*list)[len] = make_exclude(pattern, include)))
out_of_memory("add_exclude");
if (verbose > 2) {
rprintf(FINFO,"add_exclude(%s,%s)\n",pattern,
if (verbose > 2) {
rprintf(FINFO,"add_exclude(%s,%s)\n",pattern,
- "failed to open %s file %s",
- include ? "include" : "exclude",
- fname);
+ "failed to open %s file %s",
+ include ? "include" : "exclude",
+ fname);
/* Is this a '+' or '-' followed by a space (not whitespace)? */
if ((*s=='+' || *s=='-') && *(s+1)==' ')
s+=2;
/* Is this a '+' or '-' followed by a space (not whitespace)? */
if ((*s=='+' || *s=='-') && *(s+1)==' ')
s+=2;
/* Skip to the next space or the end of the string */
while (!isspace(* (unsigned char *) s) && *s != '\0')
s++;
/* Skip to the next space or the end of the string */
while (!isspace(* (unsigned char *) s) && *s != '\0')
s++;
for (i=0; cvs_ignore_list[i]; i++)
add_exclude(cvs_ignore_list[i], 0);
for (i=0; cvs_ignore_list[i]; i++)
add_exclude(cvs_ignore_list[i], 0);