Skip to content

Commit

Permalink
replace_object: use struct members instead of an array
Browse files Browse the repository at this point in the history
Give the poor humans some names to help them make sense of things.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed Feb 24, 2014
1 parent 5f95c9f commit ce37586
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions replace_object.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,21 @@
#include "refs.h"
#include "commit.h"

/*
* An array of replacements. The array is kept sorted by the original
* sha1.
*/
static struct replace_object {
unsigned char sha1[2][20];
unsigned char original[20];
unsigned char replacement[20];
} **replace_object;

static int replace_object_alloc, replace_object_nr;

static const unsigned char *replace_sha1_access(size_t index, void *table)
{
struct replace_object **replace = table;
return replace[index]->sha1[0];
return replace[index]->original;
}

static int replace_object_pos(const unsigned char *sha1)
Expand All @@ -24,7 +29,7 @@ static int replace_object_pos(const unsigned char *sha1)
static int register_replace_object(struct replace_object *replace,
int ignore_dups)
{
int pos = replace_object_pos(replace->sha1[0]);
int pos = replace_object_pos(replace->original);

if (0 <= pos) {
if (ignore_dups)
Expand Down Expand Up @@ -60,14 +65,14 @@ static int register_replace_ref(const char *refname,
const char *hash = slash ? slash + 1 : refname;
struct replace_object *repl_obj = xmalloc(sizeof(*repl_obj));

if (strlen(hash) != 40 || get_sha1_hex(hash, repl_obj->sha1[0])) {
if (strlen(hash) != 40 || get_sha1_hex(hash, repl_obj->original)) {
free(repl_obj);
warning("bad replace ref name: %s", refname);
return 0;
}

/* Copy sha1 from the read ref */
hashcpy(repl_obj->sha1[1], sha1);
hashcpy(repl_obj->replacement, sha1);

/* Register new object */
if (register_replace_object(repl_obj, 1))
Expand Down Expand Up @@ -107,7 +112,7 @@ const unsigned char *do_lookup_replace_object(const unsigned char *sha1)

pos = replace_object_pos(cur);
if (0 <= pos)
cur = replace_object[pos]->sha1[1];
cur = replace_object[pos]->replacement;
} while (0 <= pos);

return cur;
Expand Down

0 comments on commit ce37586

Please sign in to comment.