@matheusbsbs / matheus-bagliano / commits / d071d94296
Fork 0

Wrap rewrite globals in a struct in preparation for adding another set

remote.c has a global set of URL rewrites, accessed by alias_url and make_rewrite. Wrap them in a new "struct rewrites", passed to alias_url and make_rewrite. This allows adding other sets of rewrites. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Josh Triplett committed Sep 7, 2009 at 01:56 UTC d071d942963fa76b11826f25c54fdfd8b09d7626
1 file changed +28 -25
remote.c
+28 -25
@@ -28,6 +28,11 @@ struct rewrite {
28 int instead_of_nr;
29 int instead_of_alloc;
30 };
31 +struct rewrites {
32 + struct rewrite **rewrite;
33 + int rewrite_alloc;
34 + int rewrite_nr;
35 +};
36
37 static struct remote **remotes;
38 static int remotes_alloc;
@@ -41,14 +46,12 @@ static struct branch *current_branch;
46 static const char *default_remote_name;
47 static int explicit_default_remote_name;
48
44 -static struct rewrite **rewrite;
45 -static int rewrite_alloc;
46 -static int rewrite_nr;
49 +static struct rewrites rewrites;
50
51 #define BUF_SIZE (2048)
52 static char buffer[BUF_SIZE];
53
51 -static const char *alias_url(const char *url)
54 +static const char *alias_url(const char *url, struct rewrites *r)
55 {
56 int i, j;
57 char *ret;
@@ -57,14 +60,14 @@ static const char *alias_url(const char *url)
60
61 longest = NULL;
62 longest_i = -1;
60 - for (i = 0; i < rewrite_nr; i++) {
61 - if (!rewrite[i])
63 + for (i = 0; i < r->rewrite_nr; i++) {
64 + if (!r->rewrite[i])
65 continue;
63 - for (j = 0; j < rewrite[i]->instead_of_nr; j++) {
64 - if (!prefixcmp(url, rewrite[i]->instead_of[j].s) &&
66 + for (j = 0; j < r->rewrite[i]->instead_of_nr; j++) {
67 + if (!prefixcmp(url, r->rewrite[i]->instead_of[j].s) &&
68 (!longest ||
66 - longest->len < rewrite[i]->instead_of[j].len)) {
67 - longest = &(rewrite[i]->instead_of[j]);
69 + longest->len < r->rewrite[i]->instead_of[j].len)) {
70 + longest = &(r->rewrite[i]->instead_of[j]);
71 longest_i = i;
72 }
73 }
@@ -72,10 +75,10 @@ static const char *alias_url(const char *url)
75 if (!longest)
76 return url;
77
75 - ret = xmalloc(rewrite[longest_i]->baselen +
78 + ret = xmalloc(r->rewrite[longest_i]->baselen +
79 (strlen(url) - longest->len) + 1);
77 - strcpy(ret, rewrite[longest_i]->base);
78 - strcpy(ret + rewrite[longest_i]->baselen, url + longest->len);
80 + strcpy(ret, r->rewrite[longest_i]->base);
81 + strcpy(ret + r->rewrite[longest_i]->baselen, url + longest->len);
82 return ret;
83 }
84
@@ -103,7 +106,7 @@ static void add_url(struct remote *remote, const char *url)
106
107 static void add_url_alias(struct remote *remote, const char *url)
108 {
106 - add_url(remote, alias_url(url));
109 + add_url(remote, alias_url(url, &rewrites));
110 }
111
112 static void add_pushurl(struct remote *remote, const char *pushurl)
@@ -169,22 +172,22 @@ static struct branch *make_branch(const char *name, int len)
172 return ret;
173 }
174
172 -static struct rewrite *make_rewrite(const char *base, int len)
175 +static struct rewrite *make_rewrite(struct rewrites *r, const char *base, int len)
176 {
177 struct rewrite *ret;
178 int i;
179
177 - for (i = 0; i < rewrite_nr; i++) {
180 + for (i = 0; i < r->rewrite_nr; i++) {
181 if (len
179 - ? (len == rewrite[i]->baselen &&
180 - !strncmp(base, rewrite[i]->base, len))
181 - : !strcmp(base, rewrite[i]->base))
182 - return rewrite[i];
182 + ? (len == r->rewrite[i]->baselen &&
183 + !strncmp(base, r->rewrite[i]->base, len))
184 + : !strcmp(base, r->rewrite[i]->base))
185 + return r->rewrite[i];
186 }
187
185 - ALLOC_GROW(rewrite, rewrite_nr + 1, rewrite_alloc);
188 + ALLOC_GROW(r->rewrite, r->rewrite_nr + 1, r->rewrite_alloc);
189 ret = xcalloc(1, sizeof(struct rewrite));
187 - rewrite[rewrite_nr++] = ret;
190 + r->rewrite[r->rewrite_nr++] = ret;
191 if (len) {
192 ret->base = xstrndup(base, len);
193 ret->baselen = len;
@@ -355,7 +358,7 @@ static int handle_config(const char *key, const char *value, void *cb)
358 subkey = strrchr(name, '.');
359 if (!subkey)
360 return 0;
358 - rewrite = make_rewrite(name, subkey - name);
361 + rewrite = make_rewrite(&rewrites, name, subkey - name);
362 if (!strcmp(subkey, ".insteadof")) {
363 if (!value)
364 return config_error_nonbool(key);
@@ -433,10 +436,10 @@ static void alias_all_urls(void)
436 if (!remotes[i])
437 continue;
438 for (j = 0; j < remotes[i]->url_nr; j++) {
436 - remotes[i]->url[j] = alias_url(remotes[i]->url[j]);
439 + remotes[i]->url[j] = alias_url(remotes[i]->url[j], &rewrites);
440 }
441 for (j = 0; j < remotes[i]->pushurl_nr; j++) {
439 - remotes[i]->pushurl[j] = alias_url(remotes[i]->pushurl[j]);
442 + remotes[i]->pushurl[j] = alias_url(remotes[i]->pushurl[j], &rewrites);
443 }
444 }
445 }