Merge pull request #849 from scunz/git_caps Add function to query for compile time settings.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
diff --git a/include/git2/common.h b/include/git2/common.h
index 1af045c..0af37e8 100644
--- a/include/git2/common.h
+++ b/include/git2/common.h
@@ -103,6 +103,29 @@ GIT_EXTERN(int) git_strarray_copy(git_strarray *tgt, const git_strarray *src);
*/
GIT_EXTERN(void) git_libgit2_version(int *major, int *minor, int *rev);
+/**
+ * Combinations of these values describe the capabilities of libgit2.
+ */
+enum {
+ GIT_CAP_THREADS = ( 1 << 0 ),
+ GIT_CAP_HTTPS = ( 1 << 1 )
+};
+
+/**
+ * Query compile time options for libgit2.
+ *
+ * @return A combination of GIT_CAP_* values.
+ *
+ * - GIT_CAP_THREADS
+ * Libgit2 was compiled with thread support. Note that thread support is still to be seen as a
+ * 'work in progress'.
+ *
+ * - GIT_CAP_HTTPS
+ * Libgit2 supports the https:// protocol. This requires the open ssl library to be
+ * found when compiling libgit2.
+ */
+GIT_EXTERN(int) git_libgit2_capabilities(void);
+
/** @} */
GIT_END_DECL
#endif
diff --git a/src/util.c b/src/util.c
index 90bb3d0..51bf843 100644
--- a/src/util.c
+++ b/src/util.c
@@ -22,6 +22,18 @@ void git_libgit2_version(int *major, int *minor, int *rev)
*rev = LIBGIT2_VER_REVISION;
}
+int git_libgit2_capabilities()
+{
+ return 0
+#ifdef GIT_THREADS
+ | GIT_CAP_THREADS
+#endif
+#ifdef GIT_SSL
+ | GIT_CAP_HTTPS
+#endif
+ ;
+}
+
void git_strarray_free(git_strarray *array)
{
size_t i;