diff options
author | Björn Engelmann <BjEngelmann@gmx.de> | 2006-05-23 20:19:04 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-23 13:38:29 -0700 |
commit | e7332f96b32bedbc39ff6ff7e845c902056099f5 (patch) | |
tree | 3dd4f1bbf881f2af2f8119c6c33a95cbb95b0271 /mktag.c | |
parent | 405053d2d98c613d028795df439de657981e0711 (diff) | |
download | git-e7332f96b32bedbc39ff6ff7e845c902056099f5.tar.gz |
remove the artificial restriction tagsize < 8kb
Signed-off-by: Björn Engelmann <BjEngelmann@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'mktag.c')
-rw-r--r-- | mktag.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -45,7 +45,7 @@ static int verify_tag(char *buffer, unsigned long size) unsigned char sha1[20]; const char *object, *type_line, *tag_line, *tagger_line; - if (size < 64 || size > MAXSIZE-1) + if (size < 64) return -1; buffer[size] = 0; @@ -105,8 +105,8 @@ static int verify_tag(char *buffer, unsigned long size) int main(int argc, char **argv) { - unsigned long size; - char buffer[MAXSIZE]; + unsigned long size = 4096; + char *buffer = malloc(size); unsigned char result_sha1[20]; if (argc != 1) @@ -114,13 +114,9 @@ int main(int argc, char **argv) setup_git_directory(); - // Read the signature - size = 0; - for (;;) { - int ret = xread(0, buffer + size, MAXSIZE - size); - if (ret <= 0) - break; - size += ret; + if (read_pipe(0, &buffer, &size)) { + free(buffer); + die("could not read from stdin"); } // Verify it for some basic sanity: it needs to start with "object <sha1>\ntype\ntagger " @@ -129,6 +125,9 @@ int main(int argc, char **argv) if (write_sha1_file(buffer, size, tag_type, result_sha1) < 0) die("unable to write tag file"); + + free(buffer); + printf("%s\n", sha1_to_hex(result_sha1)); return 0; } |