*/
#include "cache.h"
#include "streaming.h"
+#include "repository.h"
+#include "object-store.h"
#include "packfile.h"
enum input_source {
return st->vtbl->read(st, buf, sz);
}
-static enum input_source istream_source(const unsigned char *sha1,
+static enum input_source istream_source(const struct object_id *oid,
enum object_type *type,
struct object_info *oi)
{
unsigned long size;
int status;
- struct object_id oid;
-
- hashcpy(oid.hash, sha1);
oi->typep = type;
oi->sizep = &size;
- status = oid_object_info_extended(&oid, oi, 0);
+ status = oid_object_info_extended(oid, oi, 0);
if (status < 0)
return stream_error;
{
struct git_istream *st;
struct object_info oi = OBJECT_INFO_INIT;
- const unsigned char *real = lookup_replace_object(oid->hash);
+ const struct object_id *real = lookup_replace_object(oid);
enum input_source src = istream_source(real, type, &oi);
- struct object_id realoid;
-
- hashcpy(realoid.hash, real);
if (src < 0)
return NULL;
st = xmalloc(sizeof(*st));
- if (open_istream_tbl[src](st, &oi, &realoid, type)) {
- if (open_istream_incore(st, &oi, &realoid, type)) {
+ if (open_istream_tbl[src](st, &oi, real, type)) {
+ if (open_istream_incore(st, &oi, real, type)) {
free(st);
return NULL;
}
static open_method_decl(loose)
{
- st->u.loose.mapped = map_sha1_file(oid->hash, &st->u.loose.mapsize);
+ st->u.loose.mapped = map_sha1_file(the_repository,
+ oid->hash, &st->u.loose.mapsize);
if (!st->u.loose.mapped)
return -1;
if ((unpack_sha1_header(&st->z,
static open_method_decl(incore)
{
- st->u.incore.buf = read_sha1_file_extended(oid->hash, type, &st->size, 0);
+ st->u.incore.buf = read_object_file_extended(oid, type, &st->size, 0);
st->u.incore.read_ptr = 0;
st->vtbl = &incore_vtbl;