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

[PATCH v2 8/9] files_ref_store::submodule: use NULL for the main repository

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Feb 10, 2017, 11:16 UTC
Message-ID
<a7d07a3b3374e399e0ac04b57802d247ad05a9cb.1486724698.git.mhagger@alum.mit.edu>
In-Reply-To
<cover.1486724698.git.mhagger@alum.mit.edu>

The old practice of storing the empty string in this member for the main repository was a holdover from before 00eebe3 (refs: create a base class "ref_store" for files_ref_store, 2016-09-04), when the submodule was stored in a flex array at the end of `struct files_ref_store`. Storing NULL for this case is more idiomatic and a tiny bit less code.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 refs/files-backend.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/refs/files-backend.c b/refs/files-backend.c
index c9d2d28..4fe92f0 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -915,8 +915,8 @@ struct files_ref_store {
 
 	/*
 	 * The name of the submodule represented by this object, or
-	 * the empty string if it represents the main repository's
-	 * reference store:
+	 * NULL if it represents the main repository's reference
+	 * store:
 	 */
 	const char *submodule;
 
@@ -982,7 +982,7 @@ static struct ref_store *files_ref_store_create(const char *submodule)
 
 	base_ref_store_init(ref_store, &refs_be_files);
 
-	refs->submodule = submodule ? xstrdup(submodule) : "";
+	refs->submodule = xstrdup_or_null(submodule);
 
 	return ref_store;
 }
@@ -994,7 +994,7 @@ static struct ref_store *files_ref_store_create(const char *submodule)
 static void files_assert_main_repository(struct files_ref_store *refs,
 					 const char *caller)
 {
-	if (*refs->submodule)
+	if (refs->submodule)
 		die("BUG: %s called for a submodule", caller);
 }
 
@@ -1158,7 +1158,7 @@ static struct packed_ref_cache *get_packed_ref_cache(struct files_ref_store *ref
 {
 	char *packed_refs_file;
 
-	if (*refs->submodule)
+	if (refs->submodule)
 		packed_refs_file = git_pathdup_submodule(refs->submodule,
 							 "packed-refs");
 	else
@@ -1228,7 +1228,7 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir)
 	size_t path_baselen;
 	int err = 0;
 
-	if (*refs->submodule)
+	if (refs->submodule)
 		err = strbuf_git_path_submodule(&path, refs->submodule, "%s", dirname);
 	else
 		strbuf_git_path(&path, "%s", dirname);
@@ -1269,7 +1269,7 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir)
 		} else {
 			int read_ok;
 
-			if (*refs->submodule) {
+			if (refs->submodule) {
 				hashclr(sha1);
 				flag = 0;
 				read_ok = !resolve_gitlink_ref(refs->submodule,
@@ -1383,7 +1383,7 @@ static int files_read_raw_ref(struct ref_store *ref_store,
 	*type = 0;
 	strbuf_reset(&sb_path);
 
-	if (*refs->submodule)
+	if (refs->submodule)
 		strbuf_git_path_submodule(&sb_path, refs->submodule, "%s", refname);
 	else
 		strbuf_git_path(&sb_path, "%s", refname);
-- 
2.9.3
Previous: Michael HaggertyNext: Michael Haggerty
Message 10 of 18 in “Store submodules in a hash, not a linked list”
  1. 0/9 Store submodules in a hash, not a linked listMichael Haggerty, Feb 10, 2017
  2. 2/9 refs: make some ref_store lookup functions privateMichael Haggerty, Feb 10, 2017
  3. 7/9 base_ref_store_init(): remove submodule argumentMichael Haggerty, Feb 10, 2017
  4. 9/9 read_loose_refs(): read refs using resolve_ref_recursively()Michael Haggerty, Feb 10, 2017
  5. Junio C HamanoFeb 10, 2017
  6. Michael HaggertyFeb 13, 2017
  7. Junio C HamanoFeb 13, 2017
  8. 6/9 refs: push the submodule attribute downMichael Haggerty, Feb 10, 2017
  9. 4/9 register_ref_store(): new functionMichael Haggerty, Feb 10, 2017
  10. 8/9 files_ref_store::submodule: use NULL for the main repositoryMichael Haggerty, Feb 10, 2017
  11. 3/9 refs: remove some unnecessary handling of submodule == ""Michael Haggerty, Feb 10, 2017
  12. 1/9 refs: reorder some function definitionsMichael Haggerty, Feb 10, 2017
  13. Junio C HamanoFeb 10, 2017
  14. 5/9 refs: store submodule ref stores in a hashmapMichael Haggerty, Feb 10, 2017
  15. Jeff KingFeb 10, 2017
  16. Stefan BellerFeb 10, 2017
  17. Junio C HamanoFeb 10, 2017
  18. David TurnerFeb 13, 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.