Convert the sha1 member of this struct to be an array of struct object_id instead. This change is needed to convert find_unique_abbrev. Convert some instances of hard-coded constants to use the_hash_algo as well. Signed-off-by: brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> --- builtin/ls-files.c | 2 +- resolve-undo.c | 15 ++++++++------- resolve-undo.h | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/builtin/ls-files.c b/builtin/ls-files.c index 2fc836e330..9df66ba307 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -271,7 +271,7 @@ static void show_ru_info(const struct index_state *istate) if (!ui->mode[i]) continue; printf("%s%06o %s %d\t", tag_resolve_undo, ui->mode[i], - find_unique_abbrev(ui->sha1[i], abbrev), + find_unique_abbrev(ui->oid[i].hash, abbrev), i + 1); write_name(path); } diff --git a/resolve-undo.c b/resolve-undo.c index b40f3173d3..aed95b4b35 100644 --- a/resolve-undo.c +++ b/resolve-undo.c @@ -24,7 +24,7 @@ void record_resolve_undo(struct index_state *istate, struct cache_entry *ce) if (!lost->util) lost->util = xcalloc(1, sizeof(*ui)); ui = lost->util; - hashcpy(ui->sha1[stage - 1], ce->oid.hash); + oidcpy(&ui->oid[stage - 1], &ce->oid); ui->mode[stage - 1] = ce->ce_mode; } @@ -44,7 +44,7 @@ void resolve_undo_write(struct strbuf *sb, struct string_list *resolve_undo) for (i = 0; i < 3; i++) { if (!ui->mode[i]) continue; - strbuf_add(sb, ui->sha1[i], 20); + strbuf_add(sb, ui->oid[i].hash, the_hash_algo->rawsz); } } } @@ -55,6 +55,7 @@ struct string_list *resolve_undo_read(const char *data, unsigned long size) size_t len; char *endptr; int i; + const unsigned rawsz = the_hash_algo->rawsz; resolve_undo = xcalloc(1, sizeof(*resolve_undo)); resolve_undo->strdup_strings = 1; @@ -87,11 +88,11 @@ struct string_list *resolve_undo_read(const char *data, unsigned long size) for (i = 0; i < 3; i++) { if (!ui->mode[i]) continue; - if (size < 20) + if (size < rawsz) goto error; - hashcpy(ui->sha1[i], (const unsigned char *)data); - size -= 20; - data += 20; + memcpy(ui->oid[i].hash, (const unsigned char *)data, rawsz); + size -= rawsz; + data += rawsz; } } return resolve_undo; @@ -145,7 +146,7 @@ int unmerge_index_entry_at(struct index_state *istate, int pos) struct cache_entry *nce; if (!ru->mode[i]) continue; - nce = make_cache_entry(ru->mode[i], ru->sha1[i], + nce = make_cache_entry(ru->mode[i], ru->oid[i].hash, name, i + 1, 0); if (matched) nce->ce_flags |= CE_MATCHED; diff --git a/resolve-undo.h b/resolve-undo.h index 46306455ed..87291904bd 100644 --- a/resolve-undo.h +++ b/resolve-undo.h @@ -3,7 +3,7 @@ struct resolve_undo_info { unsigned int mode[3]; - unsigned char sha1[3][20]; + struct object_id oid[3]; }; extern void record_resolve_undo(struct index_state *, struct cache_entry *);