54
static struct rewrites rewrites;
55
static struct rewrites rewrites_push;
56
57
-#define BUF_SIZE (2048)
58
-static char buffer[BUF_SIZE];
59
-
57
static int valid_remote(const struct remote *remote)
58
{
59
return (!!remote->url) || (!!remote->foreign_vcs);
240
rewrite->instead_of_nr++;
241
}
242
243
+static const char *skip_spaces(const char *s)
244
+{
245
+ while (isspace(*s))
246
+ s++;
247
+ return s;
248
+}
249
+
250
static void read_remotes_file(struct remote *remote)
251
{
252
+ struct strbuf buf = STRBUF_INIT;
253
FILE *f = fopen(git_path("remotes/%s", remote->name), "r");
254
255
if (!f)
256
return;
257
remote->origin = REMOTE_REMOTES;
253
- while (fgets(buffer, BUF_SIZE, f)) {
254
- int value_list;
255
- char *s, *p;
256
-
257
- if (starts_with(buffer, "URL:")) {
258
- value_list = 0;
259
- s = buffer + 4;
260
- } else if (starts_with(buffer, "Push:")) {
261
- value_list = 1;
262
- s = buffer + 5;
263
- } else if (starts_with(buffer, "Pull:")) {
264
- value_list = 2;
265
- s = buffer + 5;
266
- } else
267
- continue;
268
-
269
- while (isspace(*s))
270
- s++;
271
- if (!*s)
272
- continue;
258
+ while (strbuf_getline(&buf, f, '\n') != EOF) {
259
+ const char *v;
260
274
- p = s + strlen(s);
275
- while (isspace(p[-1]))
276
- *--p = 0;
261
+ strbuf_rtrim(&buf);
262
278
- switch (value_list) {
279
- case 0:
280
- add_url_alias(remote, xstrdup(s));
281
- break;
282
- case 1:
283
- add_push_refspec(remote, xstrdup(s));
284
- break;
285
- case 2:
286
- add_fetch_refspec(remote, xstrdup(s));
287
- break;
288
- }
263
+ if (skip_prefix(buf.buf, "URL:", &v))
264
+ add_url_alias(remote, xstrdup(skip_spaces(v)));
265
+ else if (skip_prefix(buf.buf, "Push:", &v))
266
+ add_push_refspec(remote, xstrdup(skip_spaces(v)));
267
+ else if (skip_prefix(buf.buf, "Pull:", &v))
268
+ add_fetch_refspec(remote, xstrdup(skip_spaces(v)));
269
}
270
+ strbuf_release(&buf);
271
fclose(f);
272
}
273