summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin-remote.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/builtin-remote.c b/builtin-remote.c
index 8dcc6a4bf9..3f6f5c2318 100644
--- a/builtin-remote.c
+++ b/builtin-remote.c
@@ -1279,14 +1279,31 @@ static int update(int argc, const char **argv)
static int get_one_entry(struct remote *remote, void *priv)
{
struct string_list *list = priv;
+ const char **url;
+ int i, url_nr;
+ void **utilp;
if (remote->url_nr > 0) {
- int i;
-
- for (i = 0; i < remote->url_nr; i++)
- string_list_append(remote->name, list)->util = (void *)remote->url[i];
+ utilp = &(string_list_append(remote->name, list)->util);
+ *utilp = malloc(strlen(remote->url[0])+strlen(" (fetch)")+1);
+ strcpy((char *) *utilp, remote->url[0]);
+ strcat((char *) *utilp, " (fetch)");
} else
string_list_append(remote->name, list)->util = NULL;
+ if (remote->pushurl_nr) {
+ url = remote->pushurl;
+ url_nr = remote->pushurl_nr;
+ } else {
+ url = remote->url;
+ url_nr = remote->url_nr;
+ }
+ for (i = 0; i < url_nr; i++)
+ {
+ utilp = &(string_list_append(remote->name, list)->util);
+ *utilp = malloc(strlen(url[i])+strlen(" (push)")+1);
+ strcpy((char *) *utilp, url[i]);
+ strcat((char *) *utilp, " (push)");
+ }
return 0;
}
@@ -1294,7 +1311,10 @@ static int get_one_entry(struct remote *remote, void *priv)
static int show_all(void)
{
struct string_list list = { NULL, 0, 0 };
- int result = for_each_remote(get_one_entry, &list);
+ int result;
+
+ list.strdup_strings = 1;
+ result = for_each_remote(get_one_entry, &list);
if (!result) {
int i;
@@ -1312,6 +1332,7 @@ static int show_all(void)
}
}
}
+ string_list_clear(&list, 1);
return result;
}