From 0155f710b856970dc1dc5261e740f135c67a7b1d Mon Sep 17 00:00:00 2001 From: "brian m. carlson" Date: Sun, 15 Oct 2017 22:07:04 +0000 Subject: refs: convert reflog_expire parameter to struct object_id reflog_expire already used struct object_id internally, but it did not take it as a parameter. Adjust the parameter (and the callers) to pass a pointer to struct object_id instead of a pointer to unsigned char. Remove the temporary inserted earlier as it is no longer required. Signed-off-by: brian m. carlson Signed-off-by: Junio C Hamano --- refs/packed-backend.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'refs/packed-backend.c') diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 3279d42c5a..4ec9fcacdd 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -1519,7 +1519,7 @@ static int packed_delete_reflog(struct ref_store *ref_store, } static int packed_reflog_expire(struct ref_store *ref_store, - const char *refname, const unsigned char *sha1, + const char *refname, const struct object_id *oid, unsigned int flags, reflog_expiry_prepare_fn prepare_fn, reflog_expiry_should_prune_fn should_prune_fn, -- cgit v1.2.3 From ac2ed0d7d51e5c0b402797ecf01f38e9bfc82e0e Mon Sep 17 00:00:00 2001 From: "brian m. carlson" Date: Sun, 15 Oct 2017 22:07:10 +0000 Subject: refs: convert peel_object to struct object_id Signed-off-by: brian m. carlson Signed-off-by: Junio C Hamano --- refs.c | 10 +++++----- refs/packed-backend.c | 6 +++--- refs/ref-cache.c | 2 +- refs/refs-internal.h | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) (limited to 'refs/packed-backend.c') diff --git a/refs.c b/refs.c index 72c45a513b..6546346b6a 100644 --- a/refs.c +++ b/refs.c @@ -252,12 +252,12 @@ static int filter_refs(const char *refname, const struct object_id *oid, return filter->fn(refname, oid, flags, filter->cb_data); } -enum peel_status peel_object(const unsigned char *name, unsigned char *sha1) +enum peel_status peel_object(const struct object_id *name, struct object_id *oid) { - struct object *o = lookup_unknown_object(name); + struct object *o = lookup_unknown_object(name->hash); if (o->type == OBJ_NONE) { - int type = sha1_object_info(name, NULL); + int type = sha1_object_info(name->hash, NULL); if (type < 0 || !object_as_type(o, type, 0)) return PEEL_INVALID; } @@ -269,7 +269,7 @@ enum peel_status peel_object(const unsigned char *name, unsigned char *sha1) if (!o) return PEEL_INVALID; - hashcpy(sha1, o->oid.hash); + oidcpy(oid, &o->oid); return PEEL_PEELED; } @@ -1714,7 +1714,7 @@ int refs_peel_ref(struct ref_store *refs, const char *refname, RESOLVE_REF_READING, &base, &flag)) return -1; - return peel_object(base.hash, oid->hash); + return peel_object(&base, oid); } int peel_ref(const char *refname, struct object_id *oid) diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 4ec9fcacdd..b7652738be 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -880,7 +880,7 @@ static int packed_ref_iterator_peel(struct ref_iterator *ref_iterator, } else if ((iter->base.flags & (REF_ISBROKEN | REF_ISSYMREF))) { return -1; } else { - return !!peel_object(iter->oid.hash, peeled->hash); + return !!peel_object(&iter->oid, peeled); } } @@ -1220,8 +1220,8 @@ static int write_with_updates(struct packed_ref_store *refs, i++; } else { struct object_id peeled; - int peel_error = peel_object(update->new_oid.hash, - peeled.hash); + int peel_error = peel_object(&update->new_oid, + &peeled); if (write_packed_entry(out, update->refname, update->new_oid.hash, diff --git a/refs/ref-cache.c b/refs/ref-cache.c index 4f850e1b5c..043eb83748 100644 --- a/refs/ref-cache.c +++ b/refs/ref-cache.c @@ -493,7 +493,7 @@ static int cache_ref_iterator_advance(struct ref_iterator *ref_iterator) static int cache_ref_iterator_peel(struct ref_iterator *ref_iterator, struct object_id *peeled) { - return peel_object(ref_iterator->oid->hash, peeled->hash); + return peel_object(ref_iterator->oid, peeled); } static int cache_ref_iterator_abort(struct ref_iterator *ref_iterator) diff --git a/refs/refs-internal.h b/refs/refs-internal.h index 3c4781eb87..54059c1daf 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -120,11 +120,11 @@ enum peel_status { /* * Peel the named object; i.e., if the object is a tag, resolve the * tag recursively until a non-tag is found. If successful, store the - * result to sha1 and return PEEL_PEELED. If the object is not a tag + * result to oid and return PEEL_PEELED. If the object is not a tag * or is not valid, return PEEL_NON_TAG or PEEL_INVALID, respectively, * and leave sha1 unchanged. */ -enum peel_status peel_object(const unsigned char *name, unsigned char *sha1); +enum peel_status peel_object(const struct object_id *name, struct object_id *oid); /* * Copy the reflog message msg to buf, which has been allocated sufficiently -- cgit v1.2.3 From 99afe91a6c3a37b7bb32c824f19b1b51712fe6f3 Mon Sep 17 00:00:00 2001 From: "brian m. carlson" Date: Sun, 15 Oct 2017 22:07:11 +0000 Subject: refs: convert read_raw_ref backends to struct object_id Convert the unsigned char * parameter to struct object_id * for files_read_raw_ref and packed_read_raw_ref. Update the documentation. Switch from using get_sha1_hex and a hard-coded 40 to using parse_oid_hex. Signed-off-by: brian m. carlson Signed-off-by: Junio C Hamano --- refs.c | 8 ++++---- refs/files-backend.c | 13 +++++++------ refs/packed-backend.c | 4 ++-- refs/refs-internal.h | 10 +++++----- 4 files changed, 18 insertions(+), 17 deletions(-) (limited to 'refs/packed-backend.c') diff --git a/refs.c b/refs.c index 6546346b6a..62a7621025 100644 --- a/refs.c +++ b/refs.c @@ -1382,10 +1382,10 @@ int for_each_rawref(each_ref_fn fn, void *cb_data) } int refs_read_raw_ref(struct ref_store *ref_store, - const char *refname, unsigned char *sha1, + const char *refname, struct object_id *oid, struct strbuf *referent, unsigned int *type) { - return ref_store->be->read_raw_ref(ref_store, refname, sha1, referent, type); + return ref_store->be->read_raw_ref(ref_store, refname, oid, referent, type); } /* This function needs to return a meaningful errno on failure */ @@ -1428,7 +1428,7 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs, unsigned int read_flags = 0; if (refs_read_raw_ref(refs, refname, - oid->hash, &sb_refname, &read_flags)) { + oid, &sb_refname, &read_flags)) { *flags |= read_flags; /* In reading mode, refs must eventually resolve */ @@ -1879,7 +1879,7 @@ int refs_verify_refname_available(struct ref_store *refs, if (skip && string_list_has_string(skip, dirname.buf)) continue; - if (!refs_read_raw_ref(refs, dirname.buf, oid.hash, &referent, &type)) { + if (!refs_read_raw_ref(refs, dirname.buf, &oid, &referent, &type)) { strbuf_addf(err, "'%s' exists; cannot create '%s'", dirname.buf, refname); goto cleanup; diff --git a/refs/files-backend.c b/refs/files-backend.c index 8bf2ef8a77..c1626490c2 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -261,7 +261,7 @@ static struct ref_cache *get_loose_ref_cache(struct files_ref_store *refs) } static int files_read_raw_ref(struct ref_store *ref_store, - const char *refname, unsigned char *sha1, + const char *refname, struct object_id *oid, struct strbuf *referent, unsigned int *type) { struct files_ref_store *refs = @@ -270,6 +270,7 @@ static int files_read_raw_ref(struct ref_store *ref_store, struct strbuf sb_path = STRBUF_INIT; const char *path; const char *buf; + const char *p; struct stat st; int fd; int ret = -1; @@ -304,7 +305,7 @@ stat_ref: if (errno != ENOENT) goto out; if (refs_read_raw_ref(refs->packed_ref_store, refname, - sha1, referent, type)) { + oid, referent, type)) { errno = ENOENT; goto out; } @@ -344,7 +345,7 @@ stat_ref: * packed ref: */ if (refs_read_raw_ref(refs->packed_ref_store, refname, - sha1, referent, type)) { + oid, referent, type)) { errno = EISDIR; goto out; } @@ -390,8 +391,8 @@ stat_ref: * Please note that FETCH_HEAD has additional * data after the sha. */ - if (get_sha1_hex(buf, sha1) || - (buf[40] != '\0' && !isspace(buf[40]))) { + if (parse_oid_hex(buf, oid, &p) || + (*p != '\0' && !isspace(*p))) { *type |= REF_ISBROKEN; errno = EINVAL; goto out; @@ -545,7 +546,7 @@ retry: */ if (files_read_raw_ref(&refs->base, refname, - lock->old_oid.hash, referent, type)) { + &lock->old_oid, referent, type)) { if (errno == ENOENT) { if (mustexist) { /* Garden variety missing reference. */ diff --git a/refs/packed-backend.c b/refs/packed-backend.c index b7652738be..74f1dea0f4 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -716,7 +716,7 @@ static struct snapshot *get_snapshot(struct packed_ref_store *refs) } static int packed_read_raw_ref(struct ref_store *ref_store, - const char *refname, unsigned char *sha1, + const char *refname, struct object_id *oid, struct strbuf *referent, unsigned int *type) { struct packed_ref_store *refs = @@ -734,7 +734,7 @@ static int packed_read_raw_ref(struct ref_store *ref_store, return -1; } - if (get_sha1_hex(rec, sha1)) + if (get_oid_hex(rec, oid)) die_invalid_line(refs->path, rec, snapshot->eof - rec); *type = REF_ISPACKED; diff --git a/refs/refs-internal.h b/refs/refs-internal.h index 54059c1daf..b0f3e300c7 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -181,7 +181,7 @@ struct ref_update { }; int refs_read_raw_ref(struct ref_store *ref_store, - const char *refname, unsigned char *sha1, + const char *refname, struct object_id *oid, struct strbuf *referent, unsigned int *type); /* @@ -619,13 +619,13 @@ typedef int reflog_expire_fn(struct ref_store *ref_store, * Read a reference from the specified reference store, non-recursively. * Set type to describe the reference, and: * - * - If refname is the name of a normal reference, fill in sha1 + * - If refname is the name of a normal reference, fill in oid * (leaving referent unchanged). * * - If refname is the name of a symbolic reference, write the full * name of the reference to which it refers (e.g. * "refs/heads/master") to referent and set the REF_ISSYMREF bit in - * type (leaving sha1 unchanged). The caller is responsible for + * type (leaving oid unchanged). The caller is responsible for * validating that referent is a valid reference name. * * WARNING: refname might be used as part of a filename, so it is @@ -637,7 +637,7 @@ typedef int reflog_expire_fn(struct ref_store *ref_store, * * Return 0 on success. If the ref doesn't exist, set errno to ENOENT * and return -1. If the ref exists but is neither a symbolic ref nor - * a sha1, it is broken; set REF_ISBROKEN in type, set errno to + * an object ID, it is broken; set REF_ISBROKEN in type, set errno to * EINVAL, and return -1. If there is another error reading the ref, * set errno appropriately and return -1. * @@ -654,7 +654,7 @@ typedef int reflog_expire_fn(struct ref_store *ref_store, * refname will still be valid and unchanged. */ typedef int read_raw_ref_fn(struct ref_store *ref_store, - const char *refname, unsigned char *sha1, + const char *refname, struct object_id *oid, struct strbuf *referent, unsigned int *type); struct ref_storage_be { -- cgit v1.2.3