builtin/show-ref: rewrite to use object_id
[gitweb.git] / http-backend.c
index 404e682593ecfca218d0aee0634f5c21356ef69c..e4f3de3b7e255c4e2ef63782f77bc63d7e1c6df2 100644 (file)
@@ -314,7 +314,6 @@ static void run_service(const char **argv)
        const char *encoding = getenv("HTTP_CONTENT_ENCODING");
        const char *user = getenv("REMOTE_USER");
        const char *host = getenv("REMOTE_ADDR");
-       struct argv_array env = ARGV_ARRAY_INIT;
        int gzipped_request = 0;
        struct child_process cld = CHILD_PROCESS_INIT;
 
@@ -329,13 +328,12 @@ static void run_service(const char **argv)
                host = "(none)";
 
        if (!getenv("GIT_COMMITTER_NAME"))
-               argv_array_pushf(&env, "GIT_COMMITTER_NAME=%s", user);
+               argv_array_pushf(&cld.env_array, "GIT_COMMITTER_NAME=%s", user);
        if (!getenv("GIT_COMMITTER_EMAIL"))
-               argv_array_pushf(&env, "GIT_COMMITTER_EMAIL=%s@http.%s",
-                                user, host);
+               argv_array_pushf(&cld.env_array,
+                                "GIT_COMMITTER_EMAIL=%s@http.%s", user, host);
 
        cld.argv = argv;
-       cld.env = env.argv;
        if (gzipped_request)
                cld.in = -1;
        cld.git_cmd = 1;
@@ -350,7 +348,6 @@ static void run_service(const char **argv)
 
        if (finish_command(&cld))
                exit(1);
-       argv_array_clear(&env);
 }
 
 static int show_text_ref(const char *name, const unsigned char *sha1,
@@ -398,8 +395,11 @@ static void get_info_refs(char *arg)
                run_service(argv);
 
        } else {
+               struct each_ref_fn_sha1_adapter wrapped_show_text_ref =
+                       {show_text_ref, &buf};
+
                select_getanyfile();
-               for_each_namespaced_ref(show_text_ref, &buf);
+               for_each_namespaced_ref(each_ref_fn_adapter, &wrapped_show_text_ref);
                send_strbuf("text/plain", &buf);
        }
        strbuf_release(&buf);
@@ -412,7 +412,9 @@ static int show_head_ref(const char *refname, const unsigned char *sha1,
 
        if (flag & REF_ISSYMREF) {
                unsigned char unused[20];
-               const char *target = resolve_ref_unsafe(refname, unused, 1, NULL);
+               const char *target = resolve_ref_unsafe(refname,
+                                                       RESOLVE_REF_READING,
+                                                       unused, NULL);
                const char *target_nons = strip_namespace(target);
 
                strbuf_addf(buf, "ref: %s\n", target_nons);
@@ -426,9 +428,11 @@ static int show_head_ref(const char *refname, const unsigned char *sha1,
 static void get_head(char *arg)
 {
        struct strbuf buf = STRBUF_INIT;
+       struct each_ref_fn_sha1_adapter wrapped_show_head_ref =
+               {show_head_ref, &buf};
 
        select_getanyfile();
-       head_ref_namespaced(show_head_ref, &buf);
+       head_ref_namespaced(each_ref_fn_adapter, &wrapped_show_head_ref);
        send_strbuf("text/plain", &buf);
        strbuf_release(&buf);
 }