mirror of
https://github.com/git/git.git
synced 2024-06-02 02:26:11 +02:00
pathspec: create parse_element_magic helper
Factor out the logic responsible for the magic in a pathspec element into its own function. Also avoid calling into the parsing functions when `PATHSPEC_LITERAL_PATH` is specified since it causes magic to be ignored and all paths to be treated as literals. Signed-off-by: Brandon Williams <bmwill@google.com> Reviewed-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8881fde013
commit
1b6112c527
37
pathspec.c
37
pathspec.c
|
@ -245,6 +245,19 @@ static const char *parse_short_magic(unsigned *magic, const char *elem)
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *parse_element_magic(unsigned *magic, int *prefix_len,
|
||||||
|
const char *elem)
|
||||||
|
{
|
||||||
|
if (elem[0] != ':' || get_literal_global())
|
||||||
|
return elem; /* nothing to do */
|
||||||
|
else if (elem[1] == '(')
|
||||||
|
/* longhand */
|
||||||
|
return parse_long_magic(magic, prefix_len, elem);
|
||||||
|
else
|
||||||
|
/* shorthand */
|
||||||
|
return parse_short_magic(magic, elem);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Take an element of a pathspec and check for magic signatures.
|
* Take an element of a pathspec and check for magic signatures.
|
||||||
* Append the result to the prefix. Return the magic bitmap.
|
* Append the result to the prefix. Return the magic bitmap.
|
||||||
|
@ -267,26 +280,16 @@ static unsigned prefix_pathspec(struct pathspec_item *item, unsigned flags,
|
||||||
char *match;
|
char *match;
|
||||||
int i, pathspec_prefix = -1;
|
int i, pathspec_prefix = -1;
|
||||||
|
|
||||||
if (elt[0] != ':' || get_literal_global() ||
|
|
||||||
(flags & PATHSPEC_LITERAL_PATH)) {
|
|
||||||
; /* nothing to do */
|
|
||||||
} else if (elt[1] == '(') {
|
|
||||||
/* longhand */
|
|
||||||
copyfrom = parse_long_magic(&element_magic,
|
|
||||||
&pathspec_prefix,
|
|
||||||
elt);
|
|
||||||
} else {
|
|
||||||
/* shorthand */
|
|
||||||
copyfrom = parse_short_magic(&element_magic, elt);
|
|
||||||
}
|
|
||||||
|
|
||||||
magic |= element_magic;
|
|
||||||
|
|
||||||
/* PATHSPEC_LITERAL_PATH ignores magic */
|
/* PATHSPEC_LITERAL_PATH ignores magic */
|
||||||
if (flags & PATHSPEC_LITERAL_PATH)
|
if (flags & PATHSPEC_LITERAL_PATH) {
|
||||||
magic = PATHSPEC_LITERAL;
|
magic = PATHSPEC_LITERAL;
|
||||||
else
|
} else {
|
||||||
|
copyfrom = parse_element_magic(&element_magic,
|
||||||
|
&pathspec_prefix,
|
||||||
|
elt);
|
||||||
|
magic |= element_magic;
|
||||||
magic |= get_global_magic(element_magic);
|
magic |= get_global_magic(element_magic);
|
||||||
|
}
|
||||||
|
|
||||||
if (pathspec_prefix >= 0 &&
|
if (pathspec_prefix >= 0 &&
|
||||||
(prefixlen || (prefix && *prefix)))
|
(prefixlen || (prefix && *prefix)))
|
||||||
|
|
Loading…
Reference in New Issue