git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 06/24] Convert check_connected to use struct object_id

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Oct 1, 2017, 22:08 UTC
Message-ID
<20171001220831.214705-7-sandals@crustytoothpaste.net>
In-Reply-To
<20171001220831.214705-1-sandals@crustytoothpaste.net>

Convert check_connected and the callbacks it takes to use struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 builtin/clone.c        |  4 ++--
 builtin/fetch.c        |  4 ++--
 builtin/receive-pack.c | 10 +++++-----
 connected.c            | 18 +++++++++---------
 connected.h            |  4 ++--
 5 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index 665a0e2673..5cd1b02d53 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -615,7 +615,7 @@ static void write_followtags(const struct ref *refs, const char *msg)
 	}
 }
 
-static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
+static int iterate_ref_map(void *cb_data, struct object_id *oid)
 {
 	struct ref **rm = cb_data;
 	struct ref *ref = *rm;
@@ -630,7 +630,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
 	if (!ref)
 		return -1;
 
-	hashcpy(sha1, ref->old_oid.hash);
+	oidcpy(oid, &ref->old_oid);
 	*rm = ref->next;
 	return 0;
 }
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 859be91d6c..e705237fa9 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -727,7 +727,7 @@ static int update_local_ref(struct ref *ref,
 	}
 }
 
-static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
+static int iterate_ref_map(void *cb_data, struct object_id *oid)
 {
 	struct ref **rm = cb_data;
 	struct ref *ref = *rm;
@@ -737,7 +737,7 @@ static int iterate_ref_map(void *cb_data, unsigned char sha1[20])
 	if (!ref)
 		return -1; /* end of the list */
 	*rm = ref->next;
-	hashcpy(sha1, ref->old_oid.hash);
+	oidcpy(oid, &ref->old_oid);
 	return 0;
 }
 
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 39defd4e3c..046b600b11 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -870,7 +870,7 @@ static void refuse_unconfigured_deny_delete_current(void)
 	rp_error("%s", _(refuse_unconfigured_deny_delete_current_msg));
 }
 
-static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]);
+static int command_singleton_iterator(void *cb_data, struct object_id *oid);
 static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
 {
 	static struct lock_file shallow_lock;
@@ -1270,7 +1270,7 @@ static void check_aliased_updates(struct command *commands)
 	string_list_clear(&ref_list, 0);
 }
 
-static int command_singleton_iterator(void *cb_data, unsigned char sha1[20])
+static int command_singleton_iterator(void *cb_data, struct object_id *oid)
 {
 	struct command **cmd_list = cb_data;
 	struct command *cmd = *cmd_list;
@@ -1278,7 +1278,7 @@ static int command_singleton_iterator(void *cb_data, unsigned char sha1[20])
 	if (!cmd || is_null_oid(&cmd->new_oid))
 		return -1; /* end of list */
 	*cmd_list = NULL; /* this returns only one */
-	hashcpy(sha1, cmd->new_oid.hash);
+	oidcpy(oid, &cmd->new_oid);
 	return 0;
 }
 
@@ -1309,7 +1309,7 @@ struct iterate_data {
 	struct shallow_info *si;
 };
 
-static int iterate_receive_command_list(void *cb_data, unsigned char sha1[20])
+static int iterate_receive_command_list(void *cb_data, struct object_id *oid)
 {
 	struct iterate_data *data = cb_data;
 	struct command **cmd_list = &data->cmds;
@@ -1320,7 +1320,7 @@ static int iterate_receive_command_list(void *cb_data, unsigned char sha1[20])
 			/* to be checked in update_shallow_ref() */
 			continue;
 		if (!is_null_oid(&cmd->new_oid) && !cmd->skip_update) {
-			hashcpy(sha1, cmd->new_oid.hash);
+			oidcpy(oid, &cmd->new_oid);
 			*cmd_list = cmd->next;
 			return 0;
 		}
diff --git a/connected.c b/connected.c
index f416b05051..4a47f33270 100644
--- a/connected.c
+++ b/connected.c
@@ -16,13 +16,13 @@
  *
  * Returns 0 if everything is connected, non-zero otherwise.
  */
-int check_connected(sha1_iterate_fn fn, void *cb_data,
+int check_connected(oid_iterate_fn fn, void *cb_data,
 		    struct check_connected_options *opt)
 {
 	struct child_process rev_list = CHILD_PROCESS_INIT;
 	struct check_connected_options defaults = CHECK_CONNECTED_INIT;
-	char commit[41];
-	unsigned char sha1[20];
+	char commit[GIT_MAX_HEXSZ + 1];
+	struct object_id oid;
 	int err = 0;
 	struct packed_git *new_pack = NULL;
 	struct transport *transport;
@@ -32,7 +32,7 @@ int check_connected(sha1_iterate_fn fn, void *cb_data,
 		opt = &defaults;
 	transport = opt->transport;
 
-	if (fn(cb_data, sha1)) {
+	if (fn(cb_data, &oid)) {
 		if (opt->err_fd)
 			close(opt->err_fd);
 		return err;
@@ -77,7 +77,7 @@ int check_connected(sha1_iterate_fn fn, void *cb_data,
 
 	sigchain_push(SIGPIPE, SIG_IGN);
 
-	commit[40] = '\n';
+	commit[GIT_SHA1_HEXSZ] = '\n';
 	do {
 		/*
 		 * If index-pack already checked that:
@@ -87,17 +87,17 @@ int check_connected(sha1_iterate_fn fn, void *cb_data,
 		 * are sure the ref is good and not sending it to
 		 * rev-list for verification.
 		 */
-		if (new_pack && find_pack_entry_one(sha1, new_pack))
+		if (new_pack && find_pack_entry_one(oid.hash, new_pack))
 			continue;
 
-		memcpy(commit, sha1_to_hex(sha1), 40);
-		if (write_in_full(rev_list.in, commit, 41) < 0) {
+		memcpy(commit, oid_to_hex(&oid), GIT_SHA1_HEXSZ);
+		if (write_in_full(rev_list.in, commit, GIT_SHA1_HEXSZ + 1) < 0) {
 			if (errno != EPIPE && errno != EINVAL)
 				error_errno(_("failed write to rev-list"));
 			err = -1;
 			break;
 		}
-	} while (!fn(cb_data, sha1));
+	} while (!fn(cb_data, &oid));
 
 	if (close(rev_list.in))
 		err = error_errno(_("failed to close rev-list's stdin"));
diff --git a/connected.h b/connected.h
index 4ca325f79d..a53f03a61a 100644
--- a/connected.h
+++ b/connected.h
@@ -8,7 +8,7 @@ struct transport;
  * When called after returning the name for the last object, return -1
  * to signal EOF, otherwise return 0.
  */
-typedef int (*sha1_iterate_fn)(void *, unsigned char [20]);
+typedef int (*oid_iterate_fn)(void *, struct object_id *oid);
 
 /*
  * Named-arguments struct for check_connected. All arguments are
@@ -51,7 +51,7 @@ struct check_connected_options {
  *
  * If "opt" is NULL, behaves as if CHECK_CONNECTED_INIT was passed.
  */
-int check_connected(sha1_iterate_fn fn, void *cb_data,
+int check_connected(oid_iterate_fn fn, void *cb_data,
 		    struct check_connected_options *opt);
 
 #endif /* CONNECTED_H */
-- 
2.14.2.822.g60be5d43e6
Previous: brian m. carlsonNext: Stefan Beller
Message 8 of 34 in “object_id part 10”
  1. 00/24 object_id part 10brian m. carlson, Oct 1, 2017
  2. 01/24 walker: convert to struct object_idbrian m. carlson, Oct 1, 2017
  3. 02/24 refs/files-backend: convert struct ref_to_prune to object_idbrian m. carlson, Oct 1, 2017
  4. 05/24 refs: update ref transactions to use struct object_idbrian m. carlson, Oct 1, 2017
  5. 07/24 refs: convert resolve_refdup and refs_resolve_refdup to struct object_idbrian m. carlson, Oct 1, 2017
  6. 03/24 refs: convert delete_ref and refs_delete_ref to struct object_idbrian m. carlson, Oct 1, 2017
  7. 08/24 refs: convert read_ref and read_ref_full to object_idbrian m. carlson, Oct 1, 2017
  8. 06/24 Convert check_connected to use struct object_idbrian m. carlson, Oct 1, 2017
  9. Stefan BellerOct 2, 2017
  10. 11/24 refs: convert dwim_log to struct object_idbrian m. carlson, Oct 1, 2017
  11. 15/24 refs: convert read_ref_at to struct object_idbrian m. carlson, Oct 1, 2017
  12. Brandon WilliamsOct 2, 2017
  13. 17/24 sha1_file: convert index_path and index_fd to struct object_idbrian m. carlson, Oct 1, 2017
  14. 24/24 refs/files-backend: convert static functions to object_idbrian m. carlson, Oct 1, 2017
  15. 23/24 refs: convert read_raw_ref backends to struct object_idbrian m. carlson, Oct 1, 2017
  16. 22/24 refs: convert peel_object to struct object_idbrian m. carlson, Oct 1, 2017
  17. 16/24 refs: convert reflog_expire parameter to struct object_idbrian m. carlson, Oct 1, 2017
  18. 20/24 worktree: convert struct worktree to object_idbrian m. carlson, Oct 1, 2017
  19. 21/24 refs: convert resolve_ref_unsafe to struct object_idbrian m. carlson, Oct 1, 2017
  20. 14/24 refs: convert peel_ref to struct object_idbrian m. carlson, Oct 1, 2017
  21. 18/24 Convert remaining callers of resolve_gitlink_ref to object_idbrian m. carlson, Oct 1, 2017
  22. 19/24 refs: convert resolve_gitlink_ref to struct object_idbrian m. carlson, Oct 1, 2017
  23. 09/24 refs: convert dwim_ref and expand_ref to struct object_idbrian m. carlson, Oct 1, 2017
  24. 13/24 builtin/pack-objects: convert to struct object_idbrian m. carlson, Oct 1, 2017
  25. Stefan BellerOct 2, 2017
  26. 10/24 builtin/reflog: convert remaining unsigned char uses to object_idbrian m. carlson, Oct 1, 2017
  27. 12/24 pack-bitmap: convert traverse_bitmap_commit_list to object_idbrian m. carlson, Oct 1, 2017
  28. 04/24 refs: convert update_ref and refs_update_ref to use struct object_idbrian m. carlson, Oct 1, 2017
  29. Stefan BellerOct 2, 2017
  30. brian m. carlsonOct 3, 2017
  31. Brandon WilliamsOct 2, 2017
  32. Brandon WilliamsOct 2, 2017
  33. Stefan BellerOct 2, 2017
  34. brian m. carlsonOct 3, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.