From: Shawn O. Pearce Date: Sat, 15 Sep 2007 07:23:07 +0000 (-0400) Subject: Cleanup duplicate initialization code in transport_get X-Git-Tag: v1.5.4-rc0~292^2~48 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=8eb554ae628d2504922912fb5f046741da4654fc;p=git.git 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 Signed-off-by: Junio C Hamano --- diff --git a/transport.c b/transport.c index 002119061..5eabe8de0 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; }