Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2012-11-14 00:57:35 +0400
committerEdward Thomson <ethomson@microsoft.com>2012-11-14 00:57:35 +0400
commit2a612fe3c31f2c386236ccb1483741835a5db318 (patch)
treed96c5f34f3da0efe666236b8f26807d1f609c0bd /src/filebuf.c
parenta8527429dc48ce0f9b63789715ed8eaa9b1abf0d (diff)
filebuf now has a git_hash_ctx instead of a ctx*
Diffstat (limited to 'src/filebuf.c')
-rw-r--r--src/filebuf.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/filebuf.c b/src/filebuf.c
index 287446673..0eb5b458a 100644
--- a/src/filebuf.c
+++ b/src/filebuf.c
@@ -85,8 +85,8 @@ static int lock_file(git_filebuf *file, int flags)
while ((read_bytes = p_read(source, buffer, sizeof(buffer))) > 0) {
p_write(file->fd, buffer, read_bytes);
- if (file->digest)
- git_hash_update(file->digest, buffer, read_bytes);
+ if (file->compute_digest)
+ git_hash_update(&file->digest, buffer, read_bytes);
}
p_close(source);
@@ -108,9 +108,9 @@ void git_filebuf_cleanup(git_filebuf *file)
if (file->fd_is_open && file->path_lock && git_path_exists(file->path_lock))
p_unlink(file->path_lock);
- if (file->digest) {
- git_hash_ctx_cleanup(file->digest);
- git__free(file->digest);
+ if (file->compute_digest) {
+ git_hash_ctx_cleanup(&file->digest);
+ file->compute_digest = 0;
}
if (file->buffer)
@@ -151,8 +151,8 @@ static int write_normal(git_filebuf *file, void *source, size_t len)
return -1;
}
- if (file->digest)
- git_hash_update(file->digest, source, len);
+ if (file->compute_digest)
+ git_hash_update(&file->digest, source, len);
}
return 0;
@@ -188,8 +188,8 @@ static int write_deflate(git_filebuf *file, void *source, size_t len)
assert(zs->avail_in == 0);
- if (file->digest)
- git_hash_update(file->digest, source, len);
+ if (file->compute_digest)
+ git_hash_update(&file->digest, source, len);
}
return 0;
@@ -223,10 +223,9 @@ int git_filebuf_open(git_filebuf *file, const char *path, int flags)
/* If we are hashing on-write, allocate a new hash context */
if (flags & GIT_FILEBUF_HASH_CONTENTS) {
- file->digest = git__calloc(1, sizeof(git_hash_ctx));
- GITERR_CHECK_ALLOC(file->digest);
+ file->compute_digest = 1;
- if (git_hash_ctx_init(file->digest) < 0)
+ if (git_hash_ctx_init(&file->digest) < 0)
goto cleanup;
}
@@ -296,17 +295,16 @@ cleanup:
int git_filebuf_hash(git_oid *oid, git_filebuf *file)
{
- assert(oid && file && file->digest);
+ assert(oid && file && file->compute_digest);
flush_buffer(file);
if (verify_last_error(file) < 0)
return -1;
- git_hash_final(oid, file->digest);
- git_hash_ctx_cleanup(file->digest);
- git__free(file->digest);
- file->digest = NULL;
+ git_hash_final(oid, &file->digest);
+ git_hash_ctx_cleanup(&file->digest);
+ file->compute_digest = 0;
return 0;
}