summaryrefslogtreecommitdiff
path: root/transport.c
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-09-15 03:23:07 -0400
committerJunio C Hamano <gitster@pobox.com>2007-09-19 03:22:31 -0700
commit8eb554ae628d2504922912fb5f046741da4654fc (patch)
tree997f783fd5a8f37dcf451ac03b5f1145200cb850 /transport.c
parentb6abb48a152879259ab59f6e470e62b59562d712 (diff)
downloadgit-8eb554ae628d2504922912fb5f046741da4654fc.tar.gz
Cleanup duplicate initialization code in transport_get
We always allocate and return a struct transport* right now as every URL is considered to be a native Git transport if it is not rsync, http/https/ftp or a bundle. So we can simplify the initialization of a new transport object by performing one xcalloc call and filling in only the attributes required. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.c')
-rw-r--r--transport.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/transport.c b/transport.c
index 002119061e..5eabe8de0b 100644
--- a/transport.c
+++ b/transport.c
@@ -411,27 +411,26 @@ static int is_file(const char *url)
struct transport *transport_get(struct remote *remote, const char *url,
int fetch)
{
- struct transport *ret = NULL;
+ struct transport *ret = xcalloc(1, sizeof(*ret));
+
+ ret->remote = remote;
+ ret->url = url;
+ ret->fetch = !!fetch;
+
if (!prefixcmp(url, "rsync://")) {
- ret = xmalloc(sizeof(*ret));
- ret->data = NULL;
ret->ops = &rsync_transport;
- } else if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://") ||
- !prefixcmp(url, "ftp://")) {
- ret = xmalloc(sizeof(*ret));
+ } else if (!prefixcmp(url, "http://")
+ || !prefixcmp(url, "https://")
+ || !prefixcmp(url, "ftp://")) {
ret->ops = &curl_transport;
if (fetch)
ret->data = get_http_walker(url);
- else
- ret->data = NULL;
} else if (is_local(url) && is_file(url)) {
struct bundle_transport_data *data = xcalloc(1, sizeof(*data));
- ret = xmalloc(sizeof(*ret));
ret->data = data;
ret->ops = &bundle_transport;
} else {
struct git_transport_data *data = xcalloc(1, sizeof(*data));
- ret = xcalloc(1, sizeof(*ret));
ret->data = data;
data->thin = 1;
data->uploadpack = "git-upload-pack";
@@ -443,13 +442,7 @@ struct transport *transport_get(struct remote *remote, const char *url,
data->unpacklimit = -1;
ret->ops = &git_transport;
}
- if (ret) {
- ret->remote = remote;
- ret->url = url;
- ret->remote_refs = NULL;
- ret->fetch = !!fetch;
- ret->pack_lockfile = NULL;
- }
+
return ret;
}