blob: 80daba980ecd85852ee3a23c155602e4cd1ba07a [file] [log] [blame]
Junio C Hamanob65bc212006-06-24 00:59:49 -07001#include "cache.h"
2
3int main(int ac, char **av)
4{
Nicolas Pitre9126f002008-10-01 14:05:20 -04005 git_SHA_CTX ctx;
Junio C Hamanob65bc212006-06-24 00:59:49 -07006 unsigned char sha1[20];
Junio C Hamanob57cbbf2006-06-24 02:59:20 -07007 unsigned bufsz = 8192;
8 char *buffer;
9
10 if (ac == 2)
11 bufsz = strtoul(av[1], NULL, 10) * 1024 * 1024;
12
13 if (!bufsz)
14 bufsz = 8192;
15
16 while ((buffer = malloc(bufsz)) == NULL) {
17 fprintf(stderr, "bufsz %u is too big, halving...\n", bufsz);
18 bufsz /= 2;
19 if (bufsz < 1024)
20 die("OOPS");
21 }
Junio C Hamanob65bc212006-06-24 00:59:49 -070022
Nicolas Pitre9126f002008-10-01 14:05:20 -040023 git_SHA1_Init(&ctx);
Junio C Hamanob65bc212006-06-24 00:59:49 -070024
25 while (1) {
Junio C Hamanob57cbbf2006-06-24 02:59:20 -070026 ssize_t sz, this_sz;
27 char *cp = buffer;
28 unsigned room = bufsz;
29 this_sz = 0;
30 while (room) {
31 sz = xread(0, cp, room);
32 if (sz == 0)
33 break;
34 if (sz < 0)
Thomas Rastd824cbb2009-06-27 17:58:46 +020035 die_errno("test-sha1");
Junio C Hamanob57cbbf2006-06-24 02:59:20 -070036 this_sz += sz;
37 cp += sz;
38 room -= sz;
39 }
40 if (this_sz == 0)
Junio C Hamanob65bc212006-06-24 00:59:49 -070041 break;
Nicolas Pitre9126f002008-10-01 14:05:20 -040042 git_SHA1_Update(&ctx, buffer, this_sz);
Junio C Hamanob65bc212006-06-24 00:59:49 -070043 }
Nicolas Pitre9126f002008-10-01 14:05:20 -040044 git_SHA1_Final(sha1, &ctx);
Junio C Hamanob65bc212006-06-24 00:59:49 -070045 puts(sha1_to_hex(sha1));
46 exit(0);
47}