summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-09-21 10:31:30 -0500
committerDan McGee <dan@archlinux.org>2011-09-22 10:32:35 -0500
commitd36d70d2947b1c6a161f6bf55ddd19445f2c81cb (patch)
tree1f441576947995ed213141f5e62f8eae57c28108
parent33f251853155fd1e04d03fbaffb3849ab8e953dc (diff)
downloadpacman-d36d70d2947b1c6a161f6bf55ddd19445f2c81cb.tar.xz
Add alpm_capabilities() method and enumeration
This allows a frontend program to query, at runtime, what the library supports. This can be useful for sanity checking during config- requiring a downloader or disallowing signature settings, for example. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/alpm.c25
-rw-r--r--lib/libalpm/alpm.h8
2 files changed, 31 insertions, 2 deletions
diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index 585c6a82..f9dd8d38 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -133,9 +133,30 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
* @brief Various libalpm functions
*/
-/* Get the version of library */
-const char SYMEXPORT *alpm_version(void) {
+/** Get the version of library.
+ * @return the library version, e.g. "6.0.4"
+ * */
+const char SYMEXPORT *alpm_version(void)
+{
return LIB_VERSION;
}
+/** Get the capabilities of the library.
+ * @return a bitmask of the capabilities
+ * */
+enum alpm_caps SYMEXPORT alpm_capabilities(void)
+{
+ return 0
+#ifdef ENABLE_NLS
+ | ALPM_CAPABILITY_NLS
+#endif
+#ifdef HAVE_LIBCURL
+ | ALPM_CAPABILITY_DOWNLOADER
+#endif
+#ifdef HAVE_LIBGPGME
+ | ALPM_CAPABILITY_SIGNATURES
+#endif
+ | 0;
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 9fe80341..c864fb9f 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -1186,7 +1186,15 @@ const char *alpm_strerror(enum _alpm_errno_t err);
alpm_handle_t *alpm_initialize(const char *root, const char *dbpath,
enum _alpm_errno_t *err);
int alpm_release(alpm_handle_t *handle);
+
+enum alpm_caps {
+ ALPM_CAPABILITY_NLS = (1 << 0),
+ ALPM_CAPABILITY_DOWNLOADER = (1 << 1),
+ ALPM_CAPABILITY_SIGNATURES = (1 << 2)
+};
+
const char *alpm_version(void);
+enum alpm_caps alpm_capabilities(void);
/* End of alpm_api */
/** @} */