remote-curl: move ref-parsing code up in file

The ref-parsing functions are static. Let's move them up in the file to be available to more functions, which will help us with later refactoring. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Feb 20, 2013 at 15:07 UTC b8054bbee70620b57e11ed78716bf187071bc368
1 file changed +59 -59
remote-curl.c
+59 -59
@@ -80,6 +80,65 @@ struct discovery {
80 };
81 static struct discovery *last_discovery;
82
83 +static struct ref *parse_git_refs(struct discovery *heads, int for_push)
84 +{
85 + struct ref *list = NULL;
86 + get_remote_heads(-1, heads->buf, heads->len, &list,
87 + for_push ? REF_NORMAL : 0, NULL);
88 + return list;
89 +}
90 +
91 +static struct ref *parse_info_refs(struct discovery *heads)
92 +{
93 + char *data, *start, *mid;
94 + char *ref_name;
95 + int i = 0;
96 +
97 + struct ref *refs = NULL;
98 + struct ref *ref = NULL;
99 + struct ref *last_ref = NULL;
100 +
101 + data = heads->buf;
102 + start = NULL;
103 + mid = data;
104 + while (i < heads->len) {
105 + if (!start) {
106 + start = &data[i];
107 + }
108 + if (data[i] == '\t')
109 + mid = &data[i];
110 + if (data[i] == '\n') {
111 + if (mid - start != 40)
112 + die("%sinfo/refs not valid: is this a git repository?", url);
113 + data[i] = 0;
114 + ref_name = mid + 1;
115 + ref = xmalloc(sizeof(struct ref) +
116 + strlen(ref_name) + 1);
117 + memset(ref, 0, sizeof(struct ref));
118 + strcpy(ref->name, ref_name);
119 + get_sha1_hex(start, ref->old_sha1);
120 + if (!refs)
121 + refs = ref;
122 + if (last_ref)
123 + last_ref->next = ref;
124 + last_ref = ref;
125 + start = NULL;
126 + }
127 + i++;
128 + }
129 +
130 + ref = alloc_ref("HEAD");
131 + if (!http_fetch_ref(url, ref) &&
132 + !resolve_remote_symref(ref, refs)) {
133 + ref->next = refs;
134 + refs = ref;
135 + } else {
136 + free(ref);
137 + }
138 +
139 + return refs;
140 +}
141 +
142 static void free_discovery(struct discovery *d)
143 {
144 if (d) {
@@ -170,65 +229,6 @@ static struct discovery* discover_refs(const char *service)
229 return last;
230 }
231
173 -static struct ref *parse_git_refs(struct discovery *heads, int for_push)
174 -{
175 - struct ref *list = NULL;
176 - get_remote_heads(-1, heads->buf, heads->len, &list,
177 - for_push ? REF_NORMAL : 0, NULL);
178 - return list;
179 -}
180 -
181 -static struct ref *parse_info_refs(struct discovery *heads)
182 -{
183 - char *data, *start, *mid;
184 - char *ref_name;
185 - int i = 0;
186 -
187 - struct ref *refs = NULL;
188 - struct ref *ref = NULL;
189 - struct ref *last_ref = NULL;
190 -
191 - data = heads->buf;
192 - start = NULL;
193 - mid = data;
194 - while (i < heads->len) {
195 - if (!start) {
196 - start = &data[i];
197 - }
198 - if (data[i] == '\t')
199 - mid = &data[i];
200 - if (data[i] == '\n') {
201 - if (mid - start != 40)
202 - die("%sinfo/refs not valid: is this a git repository?", url);
203 - data[i] = 0;
204 - ref_name = mid + 1;
205 - ref = xmalloc(sizeof(struct ref) +
206 - strlen(ref_name) + 1);
207 - memset(ref, 0, sizeof(struct ref));
208 - strcpy(ref->name, ref_name);
209 - get_sha1_hex(start, ref->old_sha1);
210 - if (!refs)
211 - refs = ref;
212 - if (last_ref)
213 - last_ref->next = ref;
214 - last_ref = ref;
215 - start = NULL;
216 - }
217 - i++;
218 - }
219 -
220 - ref = alloc_ref("HEAD");
221 - if (!http_fetch_ref(url, ref) &&
222 - !resolve_remote_symref(ref, refs)) {
223 - ref->next = refs;
224 - refs = ref;
225 - } else {
226 - free(ref);
227 - }
228 -
229 - return refs;
230 -}
231 -
232 static struct ref *get_refs(int for_push)
233 {
234 struct discovery *heads;