builtin-remote: Make "remote -v" display push urls
[gitweb.git] / builtin-remote.c
index 8dcc6a4bf904f743dfacdc4a6ae6edb0ae0f1bb5..3f6f5c2318d49fe05df78e7dfd8338383c4b39a1 100644 (file)
@@ -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;
 }