{"thread":{"id":"41472","subject":"[RFC PATCH] lmdb: restrict the visibility of some symbols","startedAt":"2016-02-22T16:41:44Z","lastAt":"2016-02-22T20:56:48Z","messageCount":2,"participants":["Ramsay Jones","David Turner"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"278884","messageId":"56CB3A48.2070904@ramsayjones.plus.com","threadId":"41472","inReplyTo":null,"subject":"[RFC PATCH] lmdb: restrict the visibility of some symbols","fromName":"Ramsay Jones","fromEmail":"ramsay@ramsayjones.plus.com","sentAt":"2016-02-22T16:41:44Z","receivedAt":"2016-02-22T16:41:44Z","isPatch":true,"sender":{"key":"ramsay@ramsayjones.plus.com","avatar":"https://avatars.githubusercontent.com/u/33702710?v=4"},"body":"\nSigned-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n---\n\nHi David,\n\nIf you need to re-roll your 'dt/refs-backend-lmdb' branch, please\nconsider squashing something like this into the relevant patches.\nNote that I marked this as RFC, because I haven't got lmdb\ninstalled, so I can't actually test it! ;-)\n\nSo, I've just eyeballed it and, hopefully, it will actually work.\n\nLet me know.\n\nThanks!\n\nATB,\nRamsay Jones\n\n refs.c                   | 2 +-\n refs.h                   | 5 ----- \n refs/refs-internal.h     | 3 +++\n test-refs-lmdb-backend.c | 5 +++--\n 4 files changed, 7 insertions(+), 8 deletions(-)\n\ndiff --git a/refs.c b/refs.c\nindex 56960b5..337f110 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -22,7 +22,7 @@ static struct ref_storage_be *refs_backends = NULL;\n \n const char *ref_storage_backend = \"files\";\n \n-void register_ref_storage_backend(struct ref_storage_be *be)\n+static void register_ref_storage_backend(struct ref_storage_be *be)\n {\n \tbe->next = refs_backends;\n \trefs_backends = be;\ndiff --git a/refs.h b/refs.h\nindex ad6d097..9cc3a37 100644\n--- a/refs.h\n+++ b/refs.h\n@@ -515,9 +515,6 @@ extern int reflog_expire(const char *refname, const unsigned char *sha1,\n  */\n int ref_storage_backend_config(const char *var, const char *value, void *ptr);\n \n-struct ref_storage_be;\n-\n-extern struct ref_storage_be refs_be_lmdb;\n /*\n  * Switch to an alternate ref storage backend.\n  */\n@@ -525,8 +522,6 @@ int set_ref_storage_backend(const char *name);\n \n int ref_storage_backend_exists(const char *name);\n \n-void register_ref_storage_backend(struct ref_storage_be *be);\n-\n void register_ref_storage_backends(void);\n \n #endif /* REFS_H */\ndiff --git a/refs/refs-internal.h b/refs/refs-internal.h\nindex 0337d2e..ced6af4 100644\n--- a/refs/refs-internal.h\n+++ b/refs/refs-internal.h\n@@ -308,5 +308,8 @@ struct ref_storage_be {\n };\n \n extern struct ref_storage_be refs_be_files;\n+#ifdef USE_LIBLMDB\n+extern struct ref_storage_be refs_be_lmdb;\n+#endif\n \n #endif /* REFS_REFS_INTERNAL_H */\ndiff --git a/test-refs-lmdb-backend.c b/test-refs-lmdb-backend.c\nindex 5cf61e6..9703e5a 100644\n--- a/test-refs-lmdb-backend.c\n+++ b/test-refs-lmdb-backend.c\n@@ -43,8 +43,9 @@ int main(int argc, const char **argv)\n \n \tgit_config(git_default_config, NULL);\n \n-\tregister_ref_storage_backend(&refs_be_lmdb);\n-\tset_ref_storage_backend(\"lmdb\");\n+\tregister_ref_storage_backends();\n+\tif (!set_ref_storage_backend(\"lmdb\"))\n+\t\tdie(\"could not set lmdb reference backend\");\n \n \tif (clear_reflog) {\n \t\ttest_refdb_raw_delete_reflog(argv[0]);\n-- \n2.7.0\n"},{"id":"278900","messageId":"1456174608.7528.99.camel@twopensource.com","threadId":"41472","inReplyTo":"56CB3A48.2070904@ramsayjones.plus.com","subject":"Re: [RFC PATCH] lmdb: restrict the visibility of some symbols","fromName":"David Turner","fromEmail":"dturner@twopensource.com","sentAt":"2016-02-22T20:56:48Z","receivedAt":"2016-02-22T20:56:48Z","isPatch":true,"sender":{"key":"novalis@novalis.org","avatar":"https://avatars.githubusercontent.com/u/77003?v=4"},"body":"Instead of directly applying this patch, I rearranged the code a bit,\nbut hopefully now have reduced the non-static surface area.  Thanks for\nthe suggestions.\n\nOn Mon, 2016-02-22 at 16:41 +0000, Ramsay Jones wrote:\n> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>\n> ---\n> \n> Hi David,\n> \n> If you need to re-roll your 'dt/refs-backend-lmdb' branch, please\n> consider squashing something like this into the relevant patches.\n> Note that I marked this as RFC, because I haven't got lmdb\n> installed, so I can't actually test it! ;-)\n> \n> So, I've just eyeballed it and, hopefully, it will actually work.\n> \n> Let me know.\n> \n> Thanks!\n> \n> ATB,\n> Ramsay Jones\n> \n>  refs.c                   | 2 +-\n>  refs.h                   | 5 ----- \n>  refs/refs-internal.h     | 3 +++\n>  test-refs-lmdb-backend.c | 5 +++--\n>  4 files changed, 7 insertions(+), 8 deletions(-)\n> \n> diff --git a/refs.c b/refs.c\n> index 56960b5..337f110 100644\n> --- a/refs.c\n> +++ b/refs.c\n> @@ -22,7 +22,7 @@ static struct ref_storage_be *refs_backends = NULL;\n>  \n>  const char *ref_storage_backend = \"files\";\n>  \n> -void register_ref_storage_backend(struct ref_storage_be *be)\n> +static void register_ref_storage_backend(struct ref_storage_be *be)\n>  {\n>  \tbe->next = refs_backends;\n>  \trefs_backends = be;\n> diff --git a/refs.h b/refs.h\n> index ad6d097..9cc3a37 100644\n> --- a/refs.h\n> +++ b/refs.h\n> @@ -515,9 +515,6 @@ extern int reflog_expire(const char *refname,\n> const unsigned char *sha1,\n>   */\n>  int ref_storage_backend_config(const char *var, const char *value,\n> void *ptr);\n>  \n> -struct ref_storage_be;\n> -\n> -extern struct ref_storage_be refs_be_lmdb;\n>  /*\n>   * Switch to an alternate ref storage backend.\n>   */\n> @@ -525,8 +522,6 @@ int set_ref_storage_backend(const char *name);\n>  \n>  int ref_storage_backend_exists(const char *name);\n>  \n> -void register_ref_storage_backend(struct ref_storage_be *be);\n> -\n>  void register_ref_storage_backends(void);\n>  \n>  #endif /* REFS_H */\n> diff --git a/refs/refs-internal.h b/refs/refs-internal.h\n> index 0337d2e..ced6af4 100644\n> --- a/refs/refs-internal.h\n> +++ b/refs/refs-internal.h\n> @@ -308,5 +308,8 @@ struct ref_storage_be {\n>  };\n>  \n>  extern struct ref_storage_be refs_be_files;\n> +#ifdef USE_LIBLMDB\n> +extern struct ref_storage_be refs_be_lmdb;\n> +#endif\n>  \n>  #endif /* REFS_REFS_INTERNAL_H */\n> diff --git a/test-refs-lmdb-backend.c b/test-refs-lmdb-backend.c\n> index 5cf61e6..9703e5a 100644\n> --- a/test-refs-lmdb-backend.c\n> +++ b/test-refs-lmdb-backend.c\n> @@ -43,8 +43,9 @@ int main(int argc, const char **argv)\n>  \n>  \tgit_config(git_default_config, NULL);\n>  \n> -\tregister_ref_storage_backend(&refs_be_lmdb);\n> -\tset_ref_storage_backend(\"lmdb\");\n> +\tregister_ref_storage_backends();\n> +\tif (!set_ref_storage_backend(\"lmdb\"))\n> +\t\tdie(\"could not set lmdb reference backend\");\n>  \n>  \tif (clear_reflog) {\n>  \t\ttest_refdb_raw_delete_reflog(argv[0]);\n"}]}