commit - a251e40e110f1b745d1be771f304a7e31e2167ba
commit + 22b6b4901ad36a6f5cfe1dc2355449d23bbd4816
blob - 0a308b0ba10453c978f0b5ed3d1f34c2f1234f14
blob + 7c5ea03802b44902eb819f4ae290a12547b6ee54
--- lib/fetch.c
+++ lib/fetch.c
}
const struct got_error*
-got_clone(char *uri, char *branch_filter, char *dirname)
+got_clone(char *uri, char *branch_filter, char *destdir)
{
char proto[GOT_PROTOMAX], host[GOT_HOSTMAX], port[GOT_PORTMAX];
char repo[GOT_REPOMAX], path[GOT_PATHMAX];
const struct got_error *err;
struct imsgbuf ibuf;
pid_t pid;
- char *packpath = NULL, *idxpath = NULL;
+ char *packpath = NULL, *idxpath = NULL, *default_destdir = NULL;
fetchfd = -1;
if (got_parse_uri(uri, proto, host, port, path, repo) == -1)
return got_error(GOT_ERR_PARSE_URI);
- if (dirname == NULL)
- dirname = repo;
- err = got_repo_init(dirname);
+ if (destdir == NULL) {
+ if (asprintf(&default_destdir, "%s.git", repo) == -1)
+ return got_error_from_errno("asprintf");
+ }
+ err = got_repo_init(destdir ? destdir : default_destdir);
if (err != NULL)
return err;
- if (chdir(dirname))
+ if (chdir(destdir ? destdir : default_destdir))
return got_error_from_errno("enter new repo");
if (mkpath(".git/objects/pack") == -1)
return got_error_from_errno("mkpath");
free(packpath);
free(idxpath);
+ free(default_destdir);
return NULL;