Code

Cleanup duplicate initialization code in transport_get
authorShawn O. Pearce <spearce@spearce.org>
Sat, 15 Sep 2007 07:23:07 +0000 (03:23 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Sep 2007 10:22:31 +0000 (03:22 -0700)
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>
transport.c

index 002119061edfbce3cb6a6bdc34cbd0759b87cf25..5eabe8de0b6b3387fbfeff50177083a28f30078c 100644 (file)
@@ -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;
 }