From fd6790210f646a61c750058261d29f6a68485e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Thu, 16 Jun 2011 02:17:49 +0200 Subject: [PATCH] Move git_pkt_{gen_proto,send_request} to transport_git.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is where they really belong. Remvoe the prefix and make them static. Signed-off-by: Carlos Martín Nieto --- include/git2/pkt.h | 5 ---- src/pkt.c | 58 --------------------------------------------- src/transport_git.c | 57 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 56 insertions(+), 64 deletions(-) diff --git a/include/git2/pkt.h b/include/git2/pkt.h index bcd5c81d1..59826da8a 100644 --- a/include/git2/pkt.h +++ b/include/git2/pkt.h @@ -51,10 +51,5 @@ struct git_pkt_ref { char *capabilities; }; -/** - * Create a git protocol request. - */ -int git_pkt_gen_proto(char **out, int *outlen, const char *cmd, const char *url); -int git_pkt_send_request(int socket, const char *cmd, const char *url); int git_pkt_parse_line(git_pkt **head, const char *line, const char **out, size_t len); void git_pkt_free(git_pkt *pkt); diff --git a/src/pkt.c b/src/pkt.c index 403850b08..eb51fe98a 100644 --- a/src/pkt.c +++ b/src/pkt.c @@ -201,64 +201,6 @@ void git_pkt_free(git_pkt *pkt) free(pkt); } -/* - * Create a git procol request. - * - * For example: 0035git-upload-pack /libgit2/libgit2\0host=github.com\0 - * - * TODO: the command should not be hard-coded - */ -int git_pkt_gen_proto(char **out, int *outlen, const char *cmd, const char *url) -{ - char *delim, *repo, *ptr; - char default_command[] = "git-upload-pack"; - char host[] = "host="; - int len; - - delim = strchr(url, '/'); - if (delim == NULL) - return git__throw(GIT_EOBJCORRUPTED, "Failed to create proto-request: malformed URL"); - - repo = delim; - - delim = strchr(url, ':'); - if (delim == NULL) - delim = strchr(url, '/'); - - if (cmd == NULL) - cmd = default_command; - - len = 4 + strlen(cmd) + 1 + strlen(repo) + 1 + STRLEN(host) + (delim - url) + 2; - - *out = git__malloc(len); - if (*out == NULL) - return GIT_ENOMEM; - - *outlen = len - 1; - ptr = *out; - memset(ptr, 0x0, len); - /* We expect the return value to be > len - 1 so don't bother checking it */ - snprintf(ptr, len -1, "%04x%s %s%c%s%s", len - 1, cmd, repo, 0, host, url); - - return GIT_SUCCESS; -} - -int git_pkt_send_request(int s, const char *cmd, const char *url) -{ - int error, len; - char *msg = NULL; - - error = git_pkt_gen_proto(&msg, &len, cmd, url); - if (error < GIT_SUCCESS) - goto cleanup; - - error = gitno_send(s, msg, len, 0); - -cleanup: - free(msg); - return error; -} - int git_pkt_send_flush(int s) { char flush[] = "0000"; diff --git a/src/transport_git.c b/src/transport_git.c index 2441edf87..eb5f70870 100644 --- a/src/transport_git.c +++ b/src/transport_git.c @@ -49,6 +49,61 @@ typedef struct { git_vector refs; git_remote_head **heads; } git_priv; +/* + * Create a git procol request. + * + * For example: 0035git-upload-pack /libgit2/libgit2\0host=github.com\0 + */ +static int gen_proto(char **out, int *outlen, const char *cmd, const char *url) +{ + char *delim, *repo, *ptr; + char default_command[] = "git-upload-pack"; + char host[] = "host="; + int len; + + delim = strchr(url, '/'); + if (delim == NULL) + return git__throw(GIT_EOBJCORRUPTED, "Failed to create proto-request: malformed URL"); + + repo = delim; + + delim = strchr(url, ':'); + if (delim == NULL) + delim = strchr(url, '/'); + + if (cmd == NULL) + cmd = default_command; + + len = 4 + strlen(cmd) + 1 + strlen(repo) + 1 + STRLEN(host) + (delim - url) + 2; + + *out = git__malloc(len); + if (*out == NULL) + return GIT_ENOMEM; + + *outlen = len - 1; + ptr = *out; + memset(ptr, 0x0, len); + /* We expect the return value to be > len - 1 so don't bother checking it */ + snprintf(ptr, len -1, "%04x%s %s%c%s%s", len - 1, cmd, repo, 0, host, url); + + return GIT_SUCCESS; +} + +static int send_request(int s, const char *cmd, const char *url) +{ + int error, len; + char *msg = NULL; + + error = gen_proto(&msg, &len, cmd, url); + if (error < GIT_SUCCESS) + goto cleanup; + + error = gitno_send(s, msg, len, 0); + +cleanup: + free(msg); + return error; +} /* The URL should already have been stripped of the protocol */ static int extract_host_and_port(char **host, char **port, const char *url) @@ -99,7 +154,7 @@ static int do_connect(git_priv *priv, const char *url) error = extract_host_and_port(&host, &port, url); s = gitno_connect(host, port); connected = 1; - error = git_pkt_send_request(s, NULL, url); + error = send_request(s, NULL, url); priv->socket = s; free(host);