builtin-fetch: add --prune option
[gitweb.git] / mktag.c
diff --git a/mktag.c b/mktag.c
index 0b34341f711a903d4a12fe96dc6ef63e55fb2f5b..a3b4270c18ea78fa36f7243de5a9e05e2066e030 100644 (file)
--- a/mktag.c
+++ b/mktag.c
@@ -1,5 +1,6 @@
 #include "cache.h"
 #include "tag.h"
+#include "exec_cmd.h"
 
 /*
  * A signature file has a very simple fixed format: four lines
 /*
  * We refuse to tag something we can't verify. Just because.
  */
-static int verify_object(unsigned char *sha1, const char *expected_type)
+static int verify_object(const unsigned char *sha1, const char *expected_type)
 {
        int ret = -1;
        enum object_type type;
        unsigned long size;
-       void *buffer = read_sha1_file(sha1, &type, &size);
+       const unsigned char *repl;
+       void *buffer = read_sha1_file_repl(sha1, &type, &size, &repl);
 
        if (buffer) {
                if (type == type_from_string(expected_type))
-                       ret = check_sha1_signature(sha1, buffer, size, expected_type);
+                       ret = check_sha1_signature(repl, buffer, size, expected_type);
                free(buffer);
        }
        return ret;
@@ -153,17 +155,18 @@ static int verify_tag(char *buffer, unsigned long size)
 
 int main(int argc, char **argv)
 {
-       struct strbuf buf;
+       struct strbuf buf = STRBUF_INIT;
        unsigned char result_sha1[20];
 
        if (argc != 1)
-               usage("git-mktag < signaturefile");
+               usage("git mktag < signaturefile");
+
+       git_extract_argv0_path(argv[0]);
 
        setup_git_directory();
 
-       strbuf_init(&buf, 0);
        if (strbuf_read(&buf, 0, 4096) < 0) {
-               die("could not read from stdin");
+               die_errno("could not read from stdin");
        }
 
        /* Verify it for some basic sanity: it needs to start with