Skip to content

Commit de67af4

Browse files
committed
Merge branch 'ss/clone-guess-dir-name-simplify' into maint
Code simplification. * ss/clone-guess-dir-name-simplify: clone: simplify string handling in guess_dir_name()
2 parents 44737c4 + 7e837c6 commit de67af4

File tree

1 file changed

+6
-13
lines changed

1 file changed

+6
-13
lines changed

builtin/clone.c

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
147147
static char *guess_dir_name(const char *repo, int is_bundle, int is_bare)
148148
{
149149
const char *end = repo + strlen(repo), *start;
150+
size_t len;
150151
char *dir;
151152

152153
/*
@@ -173,20 +174,12 @@ static char *guess_dir_name(const char *repo, int is_bundle, int is_bare)
173174
/*
174175
* Strip .{bundle,git}.
175176
*/
176-
if (is_bundle) {
177-
if (end - start > 7 && !strncmp(end - 7, ".bundle", 7))
178-
end -= 7;
179-
} else {
180-
if (end - start > 4 && !strncmp(end - 4, ".git", 4))
181-
end -= 4;
182-
}
177+
strip_suffix(start, is_bundle ? ".bundle" : ".git" , &len);
183178

184-
if (is_bare) {
185-
struct strbuf result = STRBUF_INIT;
186-
strbuf_addf(&result, "%.*s.git", (int)(end - start), start);
187-
dir = strbuf_detach(&result, NULL);
188-
} else
189-
dir = xstrndup(start, end - start);
179+
if (is_bare)
180+
dir = xstrfmt("%.*s.git", (int)len, start);
181+
else
182+
dir = xstrndup(start, len);
190183
/*
191184
* Replace sequences of 'control' characters and whitespace
192185
* with one ascii space, remove leading and trailing spaces.

0 commit comments

Comments
 (0)