aaded new function to iterate over section entries
authorMatthias Wachs <wachs@net.in.tum.de>
Mon, 18 Jul 2011 08:18:37 +0000 (08:18 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Mon, 18 Jul 2011 08:18:37 +0000 (08:18 +0000)
src/include/gnunet_configuration_lib.h
src/util/configuration.c

index 3cdd54c8f815c1396d9eddc6e7e078ba6f9bbda0..642bbde536e24019fab11c32bd3f5c2a927baa4b 100644 (file)
@@ -276,6 +276,20 @@ int GNUNET_CONFIGURATION_iterate_value_filenames (const struct
                                                   GNUNET_FileNameCallback
                                                   cb, void *cb_cls);
 
+/**
+ * Iterate over values of a section in the configuration.
+ *
+ * @param cfg configuration to inspect
+ * @param section the section
+ * @param iter function to call on each option
+ * @param iter_cls closure for iter
+ */
+void
+GNUNET_CONFIGURATION_iterate_section_values (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                              const char *section,
+                              GNUNET_CONFIGURATION_Iterator iter,
+                              void *iter_cls);
+
 /**
  * Get a configuration value that should be in a set of
  * predefined strings
index 978765970c80fbb69857b7da4cc21fc0849f805c..88bde1c38f91c6b46ced9547f711f6118547176f 100644 (file)
@@ -389,6 +389,39 @@ GNUNET_CONFIGURATION_iterate (const struct GNUNET_CONFIGURATION_Handle *cfg,
 }
 
 
+/**
+ * Iterate over values of a section in the configuration.
+ *
+ * @param cfg configuration to inspect
+ * @param section the section
+ * @param iter function to call on each option
+ * @param iter_cls closure for iter
+ */
+void
+GNUNET_CONFIGURATION_iterate_section_values (const struct GNUNET_CONFIGURATION_Handle *cfg,
+                              const char *section,
+                              GNUNET_CONFIGURATION_Iterator iter,
+                              void *iter_cls)
+{
+  struct ConfigSection *spos;
+  struct ConfigEntry *epos;
+
+  spos = cfg->sections;
+  while ((spos != NULL) && (0 != strcmp (spos->name, section)))
+    spos = spos->next;
+
+  if (spos == NULL)
+    return;
+
+  epos = spos->entries;
+  while (epos != NULL)
+    {
+      iter (iter_cls, spos->name, epos->key, epos->val);
+      epos = epos->next;
+    }
+}
+
+
 /**
  * Iterate over all sections in the configuration.
  *