completion: For consistency, change "git rev-parse" to __gitdir calls
[gitweb.git] / http-push.c
index 203c0750fe2f26da35782455c82dda7498a72666..a8ae545dfb952b9108ef679a176d57eb2216d622 100644 (file)
@@ -10,6 +10,7 @@
 #include "exec_cmd.h"
 #include "remote.h"
 #include "list-objects.h"
+#include "sigchain.h"
 
 #include <expat.h>
 
@@ -231,7 +232,8 @@ static void process_response(void *callback_data)
 
 #ifdef USE_CURL_MULTI
 
-static char *get_remote_object_url(const char *url, const char *hex, int only_two_digit_prefix)
+static char *get_remote_object_url(const char *url, const char *hex,
+                                  int only_two_digit_prefix)
 {
        struct strbuf buf = STRBUF_INIT;
        append_remote_object_url(&buf, url, hex, only_two_digit_prefix);
@@ -555,6 +557,7 @@ static void start_put(struct transfer_request *request)
        request->dest = strbuf_detach(&buf, NULL);
 
        append_remote_object_url(&buf, remote->url, hex, 0);
+       strbuf_addstr(&buf, "_");
        strbuf_addstr(&buf, request->lock->token);
        request->url = strbuf_detach(&buf, NULL);
 
@@ -1375,7 +1378,7 @@ static void remove_locks(void)
 static void remove_locks_on_signal(int signo)
 {
        remove_locks();
-       signal(signo, SIG_DFL);
+       sigchain_pop(signo);
        raise(signo);
 }
 
@@ -2186,6 +2189,8 @@ int main(int argc, char **argv)
        struct ref *ref;
        char *rewritten_url = NULL;
 
+       git_extract_argv0_path(argv[0]);
+
        setup_git_directory();
 
        remote = xcalloc(sizeof(*remote), 1);
@@ -2268,10 +2273,7 @@ int main(int argc, char **argv)
                goto cleanup;
        }
 
-       signal(SIGINT, remove_locks_on_signal);
-       signal(SIGHUP, remove_locks_on_signal);
-       signal(SIGQUIT, remove_locks_on_signal);
-       signal(SIGTERM, remove_locks_on_signal);
+       sigchain_push_common(remove_locks_on_signal);
 
        /* Check whether the remote has server info files */
        remote->can_update_info_refs = 0;