[RFC/PATCH] Fix path prefixing in grep_object
- From
Phil Hord <hordp@cisco.com>
- Date
- Aug 25, 2013, 01:35 UTC
- Message-ID
- <1377394558-371-1-git-send-email-hordp@cisco.com>
When the pathspec given to grep includes a tree name, the full name of matched files is assembled using colon as a separator. If the pathspec includes a tree name, it should use a slash instead.
Check if the pathspec already names a tree and ref (including a colon) and use a slash if so. ---
I'm not sure about the detection I used here. It works, but it is not terribly robust. Is there a better way to handle this? Maybe something like 'prefix_pathspec(name,"");'.
builtin/grep.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/builtin/grep.c b/builtin/grep.c index 03bc442..d0deae4 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -480,8 +480,9 @@ static int grep_object(struct grep_opt *opt, const struct pathspec *pathspec, len = name ? strlen(name) : 0; strbuf_init(&base, PATH_MAX + len + 1); if (len) { + int has_colon = !!strchr(name,':'); strbuf_add(&base, name, len); - strbuf_addch(&base, ':'); + strbuf_addch(&base, has_colon?'/':':'); } init_tree_desc(&tree, data, size); hit = grep_tree(opt, pathspec, &tree, &base, base.len,
-- 1.8.4.557.g34b3a2e