bionic: add __system_property_foreach

find_nth() will be inefficient on a trie.  Since find_nth() is only used
internally and only for enumerating properties, we can add a foreach()
function to do this directly.

Change-Id: I66bde9926c193073d74b244cce9fffd52108fff8
Signed-off-by: Greg Hackmann <ghackmann@google.com>
diff --git a/libc/bionic/system_properties.c b/libc/bionic/system_properties.c
index d969507..5197ef3 100644
--- a/libc/bionic/system_properties.c
+++ b/libc/bionic/system_properties.c
@@ -159,6 +159,22 @@
     return result;
 }
 
+int __system_property_foreach(
+        void (*propfn)(const prop_info *pi, void *cookie),
+        void *cookie)
+{
+    prop_area *pa = __system_property_area__;
+    unsigned i;
+
+    for (i = 0; i < pa->count; i++) {
+        unsigned entry = pa->toc[i];
+        prop_info *pi = TOC_TO_INFO(pa, entry);
+        propfn(pi, cookie);
+    }
+
+    return 0;
+}
+
 const prop_info *__system_property_find_nth(unsigned n)
 {
     prop_area *pa = __system_property_area__;