if (offset) {
if (!f->skip_hash)
- the_hash_algo->unsafe_update_fn(&f->ctx, f->buffer, offset);
+ f->algop->unsafe_update_fn(&f->ctx, f->buffer, offset);
flush(f, f->buffer, offset);
f->offset = 0;
}
hashflush(f);
if (f->skip_hash)
- hashclr(f->buffer, the_repository->hash_algo);
+ hashclr(f->buffer, f->algop);
else
- the_hash_algo->unsafe_final_fn(f->buffer, &f->ctx);
+ f->algop->unsafe_final_fn(f->buffer, &f->ctx);
if (result)
- hashcpy(result, f->buffer, the_repository->hash_algo);
+ hashcpy(result, f->buffer, f->algop);
if (flags & CSUM_HASH_IN_STREAM)
- flush(f, f->buffer, the_hash_algo->rawsz);
+ flush(f, f->buffer, f->algop->rawsz);
if (flags & CSUM_FSYNC)
fsync_component_or_die(component, f->fd, f->name);
if (flags & CSUM_CLOSE) {
* f->offset is necessarily zero.
*/
if (!f->skip_hash)
- the_hash_algo->unsafe_update_fn(&f->ctx, buf, nr);
+ f->algop->unsafe_update_fn(&f->ctx, buf, nr);
flush(f, buf, nr);
} else {
/*
f->name = name;
f->do_crc = 0;
f->skip_hash = 0;
- the_hash_algo->unsafe_init_fn(&f->ctx);
+
+ f->algop = the_hash_algo;
+ f->algop->unsafe_init_fn(&f->ctx);
f->buffer_len = buffer_len;
f->buffer = xmalloc(buffer_len);
{
hashflush(f);
checkpoint->offset = f->total;
- the_hash_algo->unsafe_clone_fn(&checkpoint->ctx, &f->ctx);
+ f->algop->unsafe_clone_fn(&checkpoint->ctx, &f->ctx);
}
int hashfile_truncate(struct hashfile *f, struct hashfile_checkpoint *checkpoint)
lseek(f->fd, offset, SEEK_SET) != offset)
return -1;
f->total = offset;
- the_hash_algo->unsafe_clone_fn(&f->ctx, &checkpoint->ctx);
+ f->algop->unsafe_clone_fn(&f->ctx, &checkpoint->ctx);
f->offset = 0; /* hashflush() was called in checkpoint */
return 0;
}