mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2009-2012 the libgit2 contributors
 | |
|  *
 | |
|  * This file is part of libgit2, distributed under the GNU GPL v2 with
 | |
|  * a Linking Exception. For full terms see the included COPYING file.
 | |
|  */
 | |
| 
 | |
| #include "common.h"
 | |
| #include "hash.h"
 | |
| 
 | |
| #if defined(PPC_SHA1)
 | |
| # include "ppc/sha1.h"
 | |
| #else
 | |
| # include "sha1.h"
 | |
| #endif
 | |
| 
 | |
| struct git_hash_ctx {
 | |
| 	SHA_CTX c;
 | |
| };
 | |
| 
 | |
| git_hash_ctx *git_hash_new_ctx(void)
 | |
| {
 | |
| 	git_hash_ctx *ctx = git__malloc(sizeof(*ctx));
 | |
| 
 | |
| 	if (!ctx)
 | |
| 		return NULL;
 | |
| 
 | |
| 	SHA1_Init(&ctx->c);
 | |
| 
 | |
| 	return ctx;
 | |
| }
 | |
| 
 | |
| void git_hash_free_ctx(git_hash_ctx *ctx)
 | |
| {
 | |
| 	git__free(ctx);
 | |
| }
 | |
| 
 | |
| void git_hash_init(git_hash_ctx *ctx)
 | |
| {
 | |
| 	assert(ctx);
 | |
| 	SHA1_Init(&ctx->c);
 | |
| }
 | |
| 
 | |
| void git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
 | |
| {
 | |
| 	assert(ctx);
 | |
| 	SHA1_Update(&ctx->c, data, len);
 | |
| }
 | |
| 
 | |
| void git_hash_final(git_oid *out, git_hash_ctx *ctx)
 | |
| {
 | |
| 	assert(ctx);
 | |
| 	SHA1_Final(out->id, &ctx->c);
 | |
| }
 | |
| 
 | |
| void git_hash_buf(git_oid *out, const void *data, size_t len)
 | |
| {
 | |
| 	SHA_CTX c;
 | |
| 
 | |
| 	SHA1_Init(&c);
 | |
| 	SHA1_Update(&c, data, len);
 | |
| 	SHA1_Final(out->id, &c);
 | |
| }
 | |
| 
 | |
| void git_hash_vec(git_oid *out, git_buf_vec *vec, size_t n)
 | |
| {
 | |
| 	SHA_CTX c;
 | |
| 	size_t i;
 | |
| 
 | |
| 	SHA1_Init(&c);
 | |
| 	for (i = 0; i < n; i++)
 | |
| 		SHA1_Update(&c, vec[i].data, vec[i].len);
 | |
| 	SHA1_Final(out->id, &c);
 | |
| }
 |