From 0143b03dc4b79b6ea6a22234bb4ac94b06ba60c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 9 Apr 2017 15:18:52 +0200
Subject: [PATCH] New function nettle_get_armors.

---
 ChangeLog            |  8 ++++++--
 nettle-meta-armors.c |  8 +++++++-
 nettle-meta.h        | 10 +++++++++-
 3 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e8adc45a..8dd78c91 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
 2017-04-09  Niels Möller  <nisse@lysator.liu.se>
 
-	* nettle-meta.h (nettle_ciphers, nettle_aeads): New macros,
-	analogous to below change to nettle_hashes.
+	* nettle-meta.h (nettle_ciphers, nettle_aeads, nettle_armors): New
+	macros, analogous to below change to nettle_hashes.
 
 	* nettle-meta-ciphers.c (_nettle_ciphers): Renamed array, from...
 	(nettle_ciphers: ... old name.
@@ -11,6 +11,10 @@
 	(nettle_aeads: ... old name.
 	(nettle_get_aeads): New function.
 
+	* nettle-meta-armors.c (_nettle_armors): Renamed array, from...
+	(nettle_armors: ... old name.
+	(nettle_get_armors): New function.
+
 2017-01-12  Niels Möller  <nisse@lysator.liu.se>
 
 	* tools/nettle-hash.c (find_algorithm): Deleted function.
diff --git a/nettle-meta-armors.c b/nettle-meta-armors.c
index 9b6c341e..17f87fce 100644
--- a/nettle-meta-armors.c
+++ b/nettle-meta-armors.c
@@ -36,9 +36,15 @@
 #include <stddef.h>
 #include "nettle-meta.h"
 
-const struct nettle_armor * const nettle_armors[] = {
+const struct nettle_armor * const _nettle_armors[] = {
   &nettle_base64,
   &nettle_base64url,
   &nettle_base16,
   NULL
 };
+
+const struct nettle_armor * const *
+nettle_get_armors (void)
+{
+  return _nettle_armors;
+}
diff --git a/nettle-meta.h b/nettle-meta.h
index c0320b45..3c13e9b2 100644
--- a/nettle-meta.h
+++ b/nettle-meta.h
@@ -244,7 +244,15 @@ struct nettle_armor
 }
 
 /* null-terminated list of armor schemes implemented by this version of nettle */
-extern const struct nettle_armor * const nettle_armors[];
+extern const struct nettle_armor * const _nettle_armors[];
+
+const struct nettle_armor * const *
+#ifdef __GNUC__
+__attribute__((pure))
+#endif
+nettle_get_armors (void);
+
+#define nettle_armors (nettle_get_armors())
 
 extern const struct nettle_armor nettle_base64;
 extern const struct nettle_armor nettle_base64url;
-- 
GitLab