get_repo_path: refactor path-allocation
commit0ea68e429647cc5400fe8fa257056083b0a6459d
authorJeff King <peff@peff.net>
Mon, 10 Aug 2015 09:37:55 +0000 (10 05:37 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Aug 2015 22:37:14 +0000 (10 15:37 -0700)
treee7bf8ddf1a1f6400f74ef3f3a82fae58434f3cd1
parent03f2c7731b59de75357730bc511ffa8847e1fb81
get_repo_path: refactor path-allocation

The get_repo_path function calls mkpath() and then does some
non-trivial operations on it, like calling
is_git_directory() and read_gitfile(). These are actually
OK (they do not use more pathname static buffers
themselves), but it takes a fair bit of work to verify.

Let's use our own strbuf to store the path, and we can
simply reuse it for each iteration of the loop (we can even
avoid rewriting the beginning part, since we are trying a
series of suffixes).

To make the strbuf cleanup easier, we split out a thin
wrapper. As a bonus, this wrapper can factor out the
canonicalization that happens in all of the early-return
code paths.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c