Skip to contentSkip to conversation

lmdb: restrict the visibility of some symbols

RFC PATCH In review Ramsay Jones 2 participants 2 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 lmdb: restrict the visibility of some symbols

---

Hi David,

If you need to re-roll your 'dt/refs-backend-lmdb' branch, please consider squashing something like this into the relevant patches. Note that I marked this as RFC, because I haven't got lmdb installed, so I can't actually test it! ;-)

So, I've just eyeballed it and, hopefully, it will actually work.

Let me know.

Thanks!

ATB,
Ramsay Jones

 refs.c                   | 2 +-
 refs.h                   | 5 ----- 
 refs/refs-internal.h     | 3 +++
 test-refs-lmdb-backend.c | 5 +++--
 4 files changed, 7 insertions(+), 8 deletions(-)
refs.c +1 -1
index 56960b5..337f110 100644
@@ -22,7 +22,7 @@ static struct ref_storage_be *refs_backends = NULL;
 
 const char *ref_storage_backend = "files";
 
-void register_ref_storage_backend(struct ref_storage_be *be)
+static void register_ref_storage_backend(struct ref_storage_be *be)
 {
 	be->next = refs_backends;
 	refs_backends = be;
refs.h +0 -5
index ad6d097..9cc3a37 100644
@@ -515,9 +515,6 @@ extern int reflog_expire(const char *refname, const unsigned char *sha1,
  */
 int ref_storage_backend_config(const char *var, const char *value, void *ptr);
 
-struct ref_storage_be;
-
-extern struct ref_storage_be refs_be_lmdb;
 /*
  * Switch to an alternate ref storage backend.
  */
@@ -525,8 +522,6 @@ int set_ref_storage_backend(const char *name);
 
 int ref_storage_backend_exists(const char *name);
 
-void register_ref_storage_backend(struct ref_storage_be *be);
-
 void register_ref_storage_backends(void);
 
 #endif /* REFS_H */
refs/refs-internal.h +3 -0
index 0337d2e..ced6af4 100644
@@ -308,5 +308,8 @@ struct ref_storage_be {
 };
 
 extern struct ref_storage_be refs_be_files;
+#ifdef USE_LIBLMDB
+extern struct ref_storage_be refs_be_lmdb;
+#endif
 
 #endif /* REFS_REFS_INTERNAL_H */
test-refs-lmdb-backend.c +3 -2
index 5cf61e6..9703e5a 100644
@@ -43,8 +43,9 @@ int main(int argc, const char **argv)
 
 	git_config(git_default_config, NULL);
 
-	register_ref_storage_backend(&refs_be_lmdb);
-	set_ref_storage_backend("lmdb");
+	register_ref_storage_backends();
+	if (!set_ref_storage_backend("lmdb"))
+		die("could not set lmdb reference backend");
 
 	if (clear_reflog) {
 		test_refdb_raw_delete_reflog(argv[0]);
Signature · 1 line
2.7.0
#1 lore raw

Instead of directly applying this patch, I rearranged the code a bit, but hopefully now have reduced the non-static surface area. Thanks for the suggestions.

Quoted 92 lines · Ramsay Jones

---

Hi David,

If you need to re-roll your 'dt/refs-backend-lmdb' branch, please consider squashing something like this into the relevant patches. Note that I marked this as RFC, because I haven't got lmdb installed, so I can't actually test it! ;-)

So, I've just eyeballed it and, hopefully, it will actually work.

Let me know.

Thanks!

ATB,
Ramsay Jones

 refs.c                   | 2 +-
 refs.h                   | 5 ----- 
 refs/refs-internal.h     | 3 +++
 test-refs-lmdb-backend.c | 5 +++--
 4 files changed, 7 insertions(+), 8 deletions(-)
refs.c +1 -1
index 56960b5..337f110 100644
@@ -22,7 +22,7 @@ static struct ref_storage_be *refs_backends = NULL;
 
 const char *ref_storage_backend = "files";
 
-void register_ref_storage_backend(struct ref_storage_be *be)
+static void register_ref_storage_backend(struct ref_storage_be *be)
 {
 	be->next = refs_backends;
 	refs_backends = be;
refs.h +0 -3
index ad6d097..9cc3a37 100644
@@ -515,9 +515,6 @@ extern int reflog_expire(const char *refname,
 const unsigned char *sha1,
  */
 int ref_storage_backend_config(const char *var, const char *value,
 void *ptr);
 
-struct ref_storage_be;
-
-extern struct ref_storage_be refs_be_lmdb;
 /*

* Switch to an alternate ref storage backend.
*/

refs.h +0 -2
@@ -525,8 +522,6 @@ int set_ref_storage_backend(const char *name);
 
 int ref_storage_backend_exists(const char *name);
 
-void register_ref_storage_backend(struct ref_storage_be *be);
-
 void register_ref_storage_backends(void);
 
 #endif /* REFS_H */
refs/refs-internal.h +3 -0
index 0337d2e..ced6af4 100644
@@ -308,5 +308,8 @@ struct ref_storage_be {
 };
 
 extern struct ref_storage_be refs_be_files;
+#ifdef USE_LIBLMDB
+extern struct ref_storage_be refs_be_lmdb;
+#endif
 
 #endif /* REFS_REFS_INTERNAL_H */
test-refs-lmdb-backend.c +3 -2
index 5cf61e6..9703e5a 100644
@@ -43,8 +43,9 @@ int main(int argc, const char **argv)
 
 	git_config(git_default_config, NULL);
 
-	register_ref_storage_backend(&refs_be_lmdb);
-	set_ref_storage_backend("lmdb");
+	register_ref_storage_backends();
+	if (!set_ref_storage_backend("lmdb"))
+		die("could not set lmdb reference backend");
 
 	if (clear_reflog) {
 		test_refdb_raw_delete_reflog(argv[0]);