From 0132cf64388adbba3d8f779e1adb0cbf45549dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 25 Jun 2011 00:23:48 +0200 Subject: [PATCH] git_pkt_send_wants --- src/pkt.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/pkt.c b/src/pkt.c index 215909055..f75b83383 100644 --- a/src/pkt.c +++ b/src/pkt.c @@ -209,3 +209,29 @@ int git_pkt_send_flush(int s) return gitno_send(s, flush, STRLEN(flush), 0); } + +/* + * All "want" packets have the same length and format, so what we do + * is overwrite the OID each time. + */ +#define WANT_PREFIX "0032want " + +int git_pkt_send_wants(git_headarray *refs) +{ + unsigned int i; + int ret = GIT_SUCCESS; + char buf[STRLEN(WANT_PREFIX) + GIT_OID_HEXSZ + 2]; + git_remote_head *head; + + memcpy(buf, WANT_PREFIX, STRLEN(WANT_PREFIX)); + buf[sizeof(buf) - 2] = '\n'; + buf[sizeof(buf) - 1] = '\0'; + + for (i = 0; i < refs->len; ++i) { + head = refs->heads[i]; + git_oid_fmt(buf + STRLEN(WANT_PREFIX), &head->oid); + printf("would send %s\n", buf); + } + + return ret; +}