http-push: convert process_ls_object and descendants to object_id

Rename one function to reflect that it now uses struct object_id.  This
conversion is a prerequisite for converting parse_object.

Note that while the use of a buffer that is exactly forty bytes long
looks questionable, get_oid_hex reads exactly the right number of bytes
and does not require the data to be NUL-terminated.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson
2017-05-06 22:10:25 +00:00
committed by Junio C Hamano
parent 4417df8c49
commit 1aa40df6b1

View File

@ -718,13 +718,13 @@ static int fetch_indices(void)
return ret; return ret;
} }
static void one_remote_object(const unsigned char *sha1) static void one_remote_object(const struct object_id *oid)
{ {
struct object *obj; struct object *obj;
obj = lookup_object(sha1); obj = lookup_object(oid->hash);
if (!obj) if (!obj)
obj = parse_object(sha1); obj = parse_object(oid->hash);
/* Ignore remote objects that don't exist locally */ /* Ignore remote objects that don't exist locally */
if (!obj) if (!obj)
@ -1013,26 +1013,26 @@ static void remote_ls(const char *path, int flags,
void *userData); void *userData);
/* extract hex from sharded "xx/x{40}" filename */ /* extract hex from sharded "xx/x{40}" filename */
static int get_sha1_hex_from_objpath(const char *path, unsigned char *sha1) static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
{ {
char hex[40]; char hex[GIT_MAX_HEXSZ];
if (strlen(path) != 41) if (strlen(path) != GIT_SHA1_HEXSZ + 1)
return -1; return -1;
memcpy(hex, path, 2); memcpy(hex, path, 2);
path += 2; path += 2;
path++; /* skip '/' */ path++; /* skip '/' */
memcpy(hex, path, 38); memcpy(hex, path, GIT_SHA1_HEXSZ - 2);
return get_sha1_hex(hex, sha1); return get_oid_hex(hex, oid);
} }
static void process_ls_object(struct remote_ls_ctx *ls) static void process_ls_object(struct remote_ls_ctx *ls)
{ {
unsigned int *parent = (unsigned int *)ls->userData; unsigned int *parent = (unsigned int *)ls->userData;
const char *path = ls->dentry_name; const char *path = ls->dentry_name;
unsigned char sha1[20]; struct object_id oid;
if (!strcmp(ls->path, ls->dentry_name) && (ls->flags & IS_DIR)) { if (!strcmp(ls->path, ls->dentry_name) && (ls->flags & IS_DIR)) {
remote_dir_exists[*parent] = 1; remote_dir_exists[*parent] = 1;
@ -1040,10 +1040,10 @@ static void process_ls_object(struct remote_ls_ctx *ls)
} }
if (!skip_prefix(path, "objects/", &path) || if (!skip_prefix(path, "objects/", &path) ||
get_sha1_hex_from_objpath(path, sha1)) get_oid_hex_from_objpath(path, &oid))
return; return;
one_remote_object(sha1); one_remote_object(&oid);
} }
static void process_ls_ref(struct remote_ls_ctx *ls) static void process_ls_ref(struct remote_ls_ctx *ls)