Whip post 1.5.3.3 maintenance series into shape.
[gitweb.git] / mktag.c
diff --git a/mktag.c b/mktag.c
index be23e589fbf504cb165abc3b97bdf5adb7317f68..38acd5a295d5f06fb2db60633e89a06ba634beb8 100644 (file)
--- a/mktag.c
+++ b/mktag.c
  * The first three lines are guaranteed to be at least 63 bytes:
  * "object <sha1>\n" is 48 bytes, "type tag\n" at 9 bytes is the
  * shortest possible type-line, and "tag .\n" at 6 bytes is the
- * shortest single-character-tag line. 
- *
- * We also artificially limit the size of the full object to 8kB.
- * Just because I'm a lazy bastard, and if you can't fit a signature
- * in that size, you're doing something wrong.
+ * shortest single-character-tag line.
  */
 
-/* Some random size */
-#define MAXSIZE (8192)
-
 /*
  * We refuse to tag something we can't verify. Just because.
  */
 static int verify_object(unsigned char *sha1, const char *expected_type)
 {
        int ret = -1;
-       char type[100];
+       enum object_type type;
        unsigned long size;
-       void *buffer = read_sha1_file(sha1, type, &size);
+       void *buffer = read_sha1_file(sha1, &type, &size);
 
        if (buffer) {
-               if (!strcmp(type, expected_type))
-                       ret = check_sha1_signature(sha1, buffer, size, type);
+               if (type == type_from_string(expected_type))
+                       ret = check_sha1_signature(sha1, buffer, size, expected_type);
                free(buffer);
        }
        return ret;
@@ -119,7 +112,7 @@ static int verify_tag(char *buffer, unsigned long size)
 int main(int argc, char **argv)
 {
        unsigned long size = 4096;
-       char *buffer = malloc(size);
+       char *buffer = xmalloc(size);
        unsigned char result_sha1[20];
 
        if (argc != 1)
@@ -127,7 +120,7 @@ int main(int argc, char **argv)
 
        setup_git_directory();
 
-       if (read_pipe(0, &buffer, &size)) {
+       if (read_fd(0, &buffer, &size)) {
                free(buffer);
                die("could not read from stdin");
        }