diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-09-15 03:23:07 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-09-19 03:22:31 -0700 |
commit | 8eb554ae628d2504922912fb5f046741da4654fc (patch) | |
tree | 997f783fd5a8f37dcf451ac03b5f1145200cb850 /transport.c | |
parent | b6abb48a152879259ab59f6e470e62b59562d712 (diff) | |
download | git-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.c | 27 |
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; } |