Browse Source

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>
maint
Linus Torvalds 19 years ago committed by Junio C Hamano
parent
commit
fc046a75d5
  1. 7
      fsck-objects.c
  2. 13
      name-rev.c
  3. 15
      object.c
  4. 5
      object.h

7
fsck-objects.c

@ -60,12 +60,13 @@ static int objwarning(struct object *obj, const char *err, ...) @@ -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

@ -234,12 +234,15 @@ int main(int argc, char **argv) @@ -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

@ -5,9 +5,18 @@ @@ -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

@ -40,10 +40,11 @@ struct object { @@ -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…
Cancel
Save