X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=test-sha1.c;h=78d7e983a7a05ba0652132425a66477ef5773304;hb=68d42c41ef33cde500307660bb64a1c74f62711e;hp=2efc315ee3cfa4cfc7c5d191d9b673d727cc40ea;hpb=b65bc21e7d8dc8cafc70dfa6354cb66b8874b2d9;p=git.git diff --git a/test-sha1.c b/test-sha1.c index 2efc315ee..78d7e983a 100644 --- a/test-sha1.c +++ b/test-sha1.c @@ -4,21 +4,44 @@ int main(int ac, char **av) { SHA_CTX ctx; unsigned char sha1[20]; + unsigned bufsz = 8192; + char *buffer; + + if (ac == 2) + bufsz = strtoul(av[1], NULL, 10) * 1024 * 1024; + + if (!bufsz) + bufsz = 8192; + + while ((buffer = malloc(bufsz)) == NULL) { + fprintf(stderr, "bufsz %u is too big, halving...\n", bufsz); + bufsz /= 2; + if (bufsz < 1024) + die("OOPS"); + } SHA1_Init(&ctx); while (1) { - ssize_t sz; - char buffer[8192]; - sz = xread(0, buffer, sizeof(buffer)); - if (sz == 0) + ssize_t sz, this_sz; + char *cp = buffer; + unsigned room = bufsz; + this_sz = 0; + while (room) { + sz = xread(0, cp, room); + if (sz == 0) + break; + if (sz < 0) + die("test-sha1: %s", strerror(errno)); + this_sz += sz; + cp += sz; + room -= sz; + } + if (this_sz == 0) break; - if (sz < 0) - die("test-sha1: %s", strerror(errno)); - SHA1_Update(&ctx, buffer, sz); + SHA1_Update(&ctx, buffer, this_sz); } SHA1_Final(sha1, &ctx); puts(sha1_to_hex(sha1)); exit(0); } -