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;
|
||||
}
|
||||
|
||||
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.
|
||||
* 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;
|
||||
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 */
|
||||
if (flags & PATHSPEC_LITERAL_PATH)
|
||||
if (flags & PATHSPEC_LITERAL_PATH) {
|
||||
magic = PATHSPEC_LITERAL;
|
||||
else
|
||||
} else {
|
||||
copyfrom = parse_element_magic(&element_magic,
|
||||
&pathspec_prefix,
|
||||
elt);
|
||||
magic |= element_magic;
|
||||
magic |= get_global_magic(element_magic);
|
||||
}
|
||||
|
||||
if (pathspec_prefix >= 0 &&
|
||||
(prefixlen || (prefix && *prefix)))
|
||||
|
Loading…
Reference in New Issue
Block a user