pack-bitmap: extract read_bitmap() function
The pack-bitmap machinery uses the `read_bitmap_1()` function to read a bitmap from within the mmap'd region corresponding to the .bitmap file. As as side-effect of calling this function, `read_bitmap_1()` increments the `index->map_pos` variable to reflect the number of bytes read. Extract the core of this routine to a separate function (that operates over a `const unsigned char *`, a `size_t` and a `size_t *` pointer) instead of a `struct bitmap_index *` pointer. This function (called `read_bitmap()`) is part of the pack-bitmap.h API so that it can be used within the upcoming portion of the implementation in pseduo-merge.ch. Rewrite the existing function, `read_bitmap_1()`, in terms of its more generic counterpart. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
53ea3ec479
commit
79621f3e41
@@ -129,17 +129,13 @@ static struct ewah_bitmap *lookup_stored_bitmap(struct stored_bitmap *st)
|
|||||||
return composed;
|
return composed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
struct ewah_bitmap *read_bitmap(const unsigned char *map,
|
||||||
* Read a bitmap from the current read position on the mmaped
|
size_t map_size, size_t *map_pos)
|
||||||
* index, and increase the read position accordingly
|
|
||||||
*/
|
|
||||||
static struct ewah_bitmap *read_bitmap_1(struct bitmap_index *index)
|
|
||||||
{
|
{
|
||||||
struct ewah_bitmap *b = ewah_pool_new();
|
struct ewah_bitmap *b = ewah_pool_new();
|
||||||
|
|
||||||
ssize_t bitmap_size = ewah_read_mmap(b,
|
ssize_t bitmap_size = ewah_read_mmap(b, map + *map_pos,
|
||||||
index->map + index->map_pos,
|
map_size - *map_pos);
|
||||||
index->map_size - index->map_pos);
|
|
||||||
|
|
||||||
if (bitmap_size < 0) {
|
if (bitmap_size < 0) {
|
||||||
error(_("failed to load bitmap index (corrupted?)"));
|
error(_("failed to load bitmap index (corrupted?)"));
|
||||||
@@ -147,10 +143,20 @@ static struct ewah_bitmap *read_bitmap_1(struct bitmap_index *index)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
index->map_pos += bitmap_size;
|
*map_pos += bitmap_size;
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read a bitmap from the current read position on the mmaped
|
||||||
|
* index, and increase the read position accordingly
|
||||||
|
*/
|
||||||
|
static struct ewah_bitmap *read_bitmap_1(struct bitmap_index *index)
|
||||||
|
{
|
||||||
|
return read_bitmap(index->map, index->map_size, &index->map_pos);
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t bitmap_num_objects(struct bitmap_index *index)
|
static uint32_t bitmap_num_objects(struct bitmap_index *index)
|
||||||
{
|
{
|
||||||
if (index->midx)
|
if (index->midx)
|
||||||
|
|||||||
@@ -160,4 +160,6 @@ int bitmap_is_preferred_refname(struct repository *r, const char *refname);
|
|||||||
|
|
||||||
int verify_bitmap_files(struct repository *r);
|
int verify_bitmap_files(struct repository *r);
|
||||||
|
|
||||||
|
struct ewah_bitmap *read_bitmap(const unsigned char *map,
|
||||||
|
size_t map_size, size_t *map_pos);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user