Abstract out accesses to object hash array
There are a few special places where some programs accessed the object hash array directly, which bothered me because I wanted to play with some simple re-organizations. So this patch makes the object hash array data structures all entirely local to object.c, and the few users who wanted to look at it now get to use a function to query how many object index entries there can be, and to actually access the array. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
8dbbd14ea3
commit
fc046a75d5
@ -60,12 +60,13 @@ static int objwarning(struct object *obj, const char *err, ...)
|
||||
|
||||
static void check_connectivity(void)
|
||||
{
|
||||
int i;
|
||||
int i, max;
|
||||
|
||||
/* Look up all the requirements, warn about missing objects.. */
|
||||
for (i = 0; i < obj_allocs; i++) {
|
||||
max = get_max_object_index();
|
||||
for (i = 0; i < max; i++) {
|
||||
const struct object_refs *refs;
|
||||
struct object *obj = objs[i];
|
||||
struct object *obj = get_indexed_object(i);
|
||||
|
||||
if (!obj)
|
||||
continue;
|
||||
|
13
name-rev.c
13
name-rev.c
@ -234,12 +234,15 @@ int main(int argc, char **argv)
|
||||
fwrite(p_start, p - p_start, 1, stdout);
|
||||
}
|
||||
} else if (all) {
|
||||
int i;
|
||||
int i, max;
|
||||
|
||||
for (i = 0; i < obj_allocs; i++)
|
||||
if (objs[i])
|
||||
printf("%s %s\n", sha1_to_hex(objs[i]->sha1),
|
||||
get_rev_name(objs[i]));
|
||||
max = get_max_object_index();
|
||||
for (i = 0; i < max; i++) {
|
||||
struct object * obj = get_indexed_object(i);
|
||||
if (!obj)
|
||||
continue;
|
||||
printf("%s %s\n", sha1_to_hex(obj->sha1), get_rev_name(obj));
|
||||
}
|
||||
} else {
|
||||
int i;
|
||||
for (i = 0; i < revs.nr; i++)
|
||||
|
15
object.c
15
object.c
@ -5,9 +5,18 @@
|
||||
#include "commit.h"
|
||||
#include "tag.h"
|
||||
|
||||
struct object **objs;
|
||||
static int nr_objs;
|
||||
int obj_allocs;
|
||||
static struct object **objs;
|
||||
static int nr_objs, obj_allocs;
|
||||
|
||||
unsigned int get_max_object_index(void)
|
||||
{
|
||||
return obj_allocs;
|
||||
}
|
||||
|
||||
struct object *get_indexed_object(unsigned int idx)
|
||||
{
|
||||
return objs[idx];
|
||||
}
|
||||
|
||||
const char *type_names[] = {
|
||||
"none", "blob", "tree", "commit", "bad"
|
||||
|
5
object.h
5
object.h
@ -40,10 +40,11 @@ struct object {
|
||||
};
|
||||
|
||||
extern int track_object_refs;
|
||||
extern int obj_allocs;
|
||||
extern struct object **objs;
|
||||
extern const char *type_names[];
|
||||
|
||||
extern unsigned int get_max_object_index(void);
|
||||
extern struct object *get_indexed_object(unsigned int);
|
||||
|
||||
static inline const char *typename(unsigned int type)
|
||||
{
|
||||
return type_names[type > TYPE_TAG ? TYPE_BAD : type];
|
||||
|
Loading…
Reference in New Issue
Block a user