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)
|
static void check_connectivity(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i, max;
|
||||||
|
|
||||||
/* Look up all the requirements, warn about missing objects.. */
|
/* 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;
|
const struct object_refs *refs;
|
||||||
struct object *obj = objs[i];
|
struct object *obj = get_indexed_object(i);
|
||||||
|
|
||||||
if (!obj)
|
if (!obj)
|
||||||
continue;
|
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);
|
fwrite(p_start, p - p_start, 1, stdout);
|
||||||
}
|
}
|
||||||
} else if (all) {
|
} else if (all) {
|
||||||
int i;
|
int i, max;
|
||||||
|
|
||||||
for (i = 0; i < obj_allocs; i++)
|
max = get_max_object_index();
|
||||||
if (objs[i])
|
for (i = 0; i < max; i++) {
|
||||||
printf("%s %s\n", sha1_to_hex(objs[i]->sha1),
|
struct object * obj = get_indexed_object(i);
|
||||||
get_rev_name(objs[i]));
|
if (!obj)
|
||||||
|
continue;
|
||||||
|
printf("%s %s\n", sha1_to_hex(obj->sha1), get_rev_name(obj));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < revs.nr; i++)
|
for (i = 0; i < revs.nr; i++)
|
||||||
|
15
object.c
15
object.c
@ -5,9 +5,18 @@
|
|||||||
#include "commit.h"
|
#include "commit.h"
|
||||||
#include "tag.h"
|
#include "tag.h"
|
||||||
|
|
||||||
struct object **objs;
|
static struct object **objs;
|
||||||
static int nr_objs;
|
static int nr_objs, obj_allocs;
|
||||||
int 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[] = {
|
const char *type_names[] = {
|
||||||
"none", "blob", "tree", "commit", "bad"
|
"none", "blob", "tree", "commit", "bad"
|
||||||
|
5
object.h
5
object.h
@ -40,10 +40,11 @@ struct object {
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern int track_object_refs;
|
extern int track_object_refs;
|
||||||
extern int obj_allocs;
|
|
||||||
extern struct object **objs;
|
|
||||||
extern const char *type_names[];
|
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)
|
static inline const char *typename(unsigned int type)
|
||||||
{
|
{
|
||||||
return type_names[type > TYPE_TAG ? TYPE_BAD : type];
|
return type_names[type > TYPE_TAG ? TYPE_BAD : type];
|
||||||
|
Loading…
Reference in New Issue
Block a user