[PATCH v1 11/45] parse_pathspec: support stripping submodule trailing slashes
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:56:24
Subsystem:
the rest · Maintainer:
Linus Torvalds
This flag is equivalent to builtin/ls-files.c:strip_trailing_slashes() and is intended to replace that function when ls-files is converted to use parse_pathspec. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- pathspec.c | 9 +++++++++ pathspec.h | 1 + 2 files changed, 10 insertions(+)
diff --git a/pathspec.c b/pathspec.c
index b2446c3..2da8bc9 100644
--- a/pathspec.c
+++ b/pathspec.c@@ -204,6 +204,15 @@ static unsigned prefix_pathspec(struct pathspec_item *item, *raw = item->match = match; item->original = elt; item->len = strlen(item->match); + + if ((flags & PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP) && + (item->len >= 1 && item->match[item->len - 1] == '/') && + (i = cache_name_pos(item->match, item->len - 1)) >= 0 && + S_ISGITLINK(active_cache[i]->ce_mode)) { + item->len--; + match[item->len] = '\0'; + } + if (limit_pathspec_to_literal()) item->nowildcard_len = item->len; else
diff --git a/pathspec.h b/pathspec.h
index aa98597..f24b07b 100644
--- a/pathspec.h
+++ b/pathspec.h@@ -31,6 +31,7 @@ struct pathspec { #define PATHSPEC_PREFER_CWD (1<<0) /* No args means match cwd */ #define PATHSPEC_PREFER_FULL (1<<1) /* No args means match everything */ #define PATHSPEC_MAXDEPTH_VALID (1<<2) /* max_depth field is valid */ +#define PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP (1<<3) extern int init_pathspec(struct pathspec *, const char **); extern void parse_pathspec(struct pathspec *pathspec,
--
1.8.0.rc0.19.g7bbb31d