Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
dir.c: prepare match_pathspec_item for taking more flags
author
Nguyễn Thái Ngọc Duy
<pclouds@gmail.com>
Fri, 24 Jan 2014 13:40:31 +0000
(20:40 +0700)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 24 Feb 2014 22:37:19 +0000
(14:37 -0800)
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
dir.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
854b095
)
diff --git
a/dir.c
b/dir.c
index 442a548f25d8c582438e8f1df3e9b98e0d1db27c..124b4341099fcca11e3dd4cf6ef101291a972f52 100644
(file)
--- a/
dir.c
+++ b/
dir.c
@@
-195,6
+195,8
@@
int within_depth(const char *name, int namelen,
return 1;
}
return 1;
}
+#define DO_MATCH_EXCLUDE 1
+
/*
* Does 'match' match the given name?
* A match is found if
/*
* Does 'match' match the given name?
* A match is found if
@@
-208,7
+210,7
@@
int within_depth(const char *name, int namelen,
* It returns 0 when there is no match.
*/
static int match_pathspec_item(const struct pathspec_item *item, int prefix,
* It returns 0 when there is no match.
*/
static int match_pathspec_item(const struct pathspec_item *item, int prefix,
- const char *name, int namelen)
+ const char *name, int namelen
, unsigned flags
)
{
/* name/namelen has prefix cut off by caller */
const char *match = item->match + prefix;
{
/* name/namelen has prefix cut off by caller */
const char *match = item->match + prefix;
@@
-285,9
+287,9
@@
static int match_pathspec_item(const struct pathspec_item *item, int prefix,
static int do_match_pathspec(const struct pathspec *ps,
const char *name, int namelen,
int prefix, char *seen,
static int do_match_pathspec(const struct pathspec *ps,
const char *name, int namelen,
int prefix, char *seen,
-
int exclude
)
+
unsigned flags
)
{
{
- int i, retval = 0;
+ int i, retval = 0
, exclude = flags & DO_MATCH_EXCLUDE
;
GUARD_PATHSPEC(ps,
PATHSPEC_FROMTOP |
GUARD_PATHSPEC(ps,
PATHSPEC_FROMTOP |
@@
-327,7
+329,8
@@
static int do_match_pathspec(const struct pathspec *ps,
*/
if (seen && ps->items[i].magic & PATHSPEC_EXCLUDE)
seen[i] = MATCHED_FNMATCH;
*/
if (seen && ps->items[i].magic & PATHSPEC_EXCLUDE)
seen[i] = MATCHED_FNMATCH;
- how = match_pathspec_item(ps->items+i, prefix, name, namelen);
+ how = match_pathspec_item(ps->items+i, prefix, name,
+ namelen, flags);
if (ps->recursive &&
(ps->magic & PATHSPEC_MAXDEPTH) &&
ps->max_depth != -1 &&
if (ps->recursive &&
(ps->magic & PATHSPEC_MAXDEPTH) &&
ps->max_depth != -1 &&
@@
-355,10
+358,14
@@
int match_pathspec(const struct pathspec *ps,
int prefix, char *seen)
{
int positive, negative;
int prefix, char *seen)
{
int positive, negative;
- positive = do_match_pathspec(ps, name, namelen, prefix, seen, 0);
+ unsigned flags = 0;
+ positive = do_match_pathspec(ps, name, namelen,
+ prefix, seen, flags);
if (!(ps->magic & PATHSPEC_EXCLUDE) || !positive)
return positive;
if (!(ps->magic & PATHSPEC_EXCLUDE) || !positive)
return positive;
- negative = do_match_pathspec(ps, name, namelen, prefix, seen, 1);
+ negative = do_match_pathspec(ps, name, namelen,
+ prefix, seen,
+ flags | DO_MATCH_EXCLUDE);
return negative ? 0 : positive;
}
return negative ? 0 : positive;
}