fa5419167433c0bf67c95aea3bf10d248ca43657
galt
  Thu Apr 20 14:13:05 2017 -0700
Swapping out the Linus Torvalds version of sha1 from git with a free version not encumbered by license questions. It is smaller and even slightly faster. Maybe compilers have improved.

diff --git src/lib/tests/gitSha1Test.c src/lib/tests/gitSha1Test.c
deleted file mode 100644
index a76d48d..0000000
--- src/lib/tests/gitSha1Test.c
+++ /dev/null
@@ -1,142 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "common.h"
-#include "obscure.h"
-#include "portable.h"
-#include "gitSha1.h"
-
-void manual_way(char *filename, unsigned char hash[20])
-/* generate sha1 manually the hard way. */
-{
-FILE *fp = fopen (filename, "r");
-if (!fp) errAbort("missing file %s", filename);
-
-#define BS 4096 /* match coreutils */
-
-blk_SHA_CTX ctx;
-blk_SHA1_Init(&ctx);
-size_t nr;
-char buf[BS];
-while ((nr=fread_unlocked(buf, 1, sizeof(buf), fp)))
-    blk_SHA1_Update(&ctx, buf, nr);
-
-blk_SHA1_Final(hash, &ctx);
-}
-
-char *string_way(char *filename)
-/* generate sha1 via lib on single long string. */
-{
-char *buf = NULL;
-size_t bufSize;
-readInGulp(filename, &buf, &bufSize);
-return sha1HexForBuf(buf, bufSize);
-}
-
-char *git_way(char *filename)
-/* generate sha1 using git blob prefix.
- * Note that if you run this from the commandline, you get the git result
- * which of course includes its own blob prefix automatically:
-     git hash-object some-file-name
- */
-{
-char *buf = NULL;
-size_t bufSize;
-readInGulp(filename, &buf, &bufSize);
-char prefix[1024];
-safef(prefix, sizeof prefix, "blob %llu", (unsigned long long)bufSize);
-int pfxLen = strlen(prefix)+1;
-size_t bufSize2 = pfxLen+bufSize;
-char *buf2 = needLargeMem(bufSize2);
-memmove(buf2,prefix,strlen(prefix)+1);
-memmove(buf2+strlen(prefix)+1,buf,bufSize);
-return sha1HexForBuf(buf2, bufSize2);
-}
-
-char *git_way2(char *filename)
-/* generate sha1 manually with git blob prefix the hard way. */
-{
-FILE *fp = fopen (filename, "r");
-if (!fp) errAbort("missing file %s", filename);
-
-#define BS 4096 /* match coreutils */
-unsigned char hash[20];
-
-off_t fs = fileSize(filename);
-char prefix[1024];
-safef(prefix, sizeof prefix, "blob %llu", (unsigned long long)fs);
-
-blk_SHA_CTX ctx;
-blk_SHA1_Init(&ctx);
-
-blk_SHA1_Update(&ctx, prefix, strlen(prefix)+1);
-
-size_t nr;
-char buf[BS];
-while ((nr=fread_unlocked(buf, 1, sizeof(buf), fp)))
-    blk_SHA1_Update(&ctx, buf, nr);
-
-blk_SHA1_Final(hash, &ctx);
-return sha1ToHex(hash);
-}
-
-void git_way3(char *filename)
-/* generate sha1 manually the hard way. */
-{
-char cmd[1024];
-safef(cmd, sizeof cmd, "git hash-object %s", filename);
-printf("executing system command [%s]\n", cmd);
-system(cmd);
-}
-
-char *string_empty()
-/* generate sha1 via lib on empty input. */
-{
-char *buf = NULL;
-size_t bufSize = 0;
-return sha1HexForBuf(buf, bufSize);
-}
-
-int main(int argc, char** argv)
-{
-    if (argc != 2) 
-	errAbort("must specfy file to use for sha1 has on commandline.");
-    char* filename = argv[1];
-
-    printf("Library filename way:\n");
-    long thisTime = 0, lastTime = 0;
-    lastTime = clock1();
-    char *hex = sha1HexForFile(filename);
-    thisTime = clock1();
-    printf("%s  %s elapsed time in seconds: %ld\n\n", hex, filename, (thisTime - lastTime));
-
-    printf("Manual filename way:\n");
-    unsigned char hash[20];
-    manual_way(filename, hash);   
-    int i;
-    for (i=0; i<sizeof(hash); i++)
-        printf("%02x",*(hash+i));
-    printf("  %s\n\n", filename);
-
-    printf("Library string way:\n");
-    hex = string_way(filename);
-    printf("%s  %s\n\n", hex, filename);
-
-    printf("GIT way:\n");
-    hex = git_way(filename);
-    printf("%s with git blob prefix  %s\n\n", hex, filename);
-
-    printf("GIT way2:\n");
-    hex = git_way2(filename);
-    printf("%s with git way2 blob prefix  %s\n\n", hex, filename);
-
-    git_way3(filename);
-    printf("\n");
-
-    printf("Library string empty:\n");
-    hex = string_empty();
-    printf("%s  %s\n\n", hex, "empty-string");
-
-    return 0;
-}
-
-