Skip to content

Commit

Permalink
Abstract out accesses to object hash array
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Linus Torvalds authored and Junio C Hamano committed Jun 30, 2006
1 parent 8dbbd14 commit fc046a7
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 13 deletions.
7 changes: 4 additions & 3 deletions fsck-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
13 changes: 8 additions & 5 deletions name-rev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++)
Expand Down
15 changes: 12 additions & 3 deletions object.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
5 changes: 3 additions & 2 deletions object.h
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down

0 comments on commit fc046a7

Please sign in to comment.