Added function to get a list of meta data entries.
authorSven Trenkel <collectd@semidefinite.de>
Wed, 9 Dec 2009 12:53:14 +0000 (13:53 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 10 Dec 2009 09:17:18 +0000 (10:17 +0100)
src/meta_data.c
src/meta_data.h

index a7c11c1..80b6dd1 100644 (file)
@@ -262,6 +262,27 @@ int meta_data_type (meta_data_t *md, const char *key) /* {{{ */
   return 0;
 } /* }}} int meta_data_type */
 
+int meta_data_toc (meta_data_t *md, char ***toc) /* {{{ */
+{
+  int i = 0, count = 0;
+  meta_entry_t *e;
+
+  if ((md == NULL) || (toc == NULL))
+    return -1;
+
+  pthread_mutex_lock (&md->lock);
+
+  for (e = md->head; e != NULL; e = e->next)
+    ++count;    
+
+  *toc = malloc(count * sizeof(**toc));
+  for (e = md->head; e != NULL; e = e->next)
+    (*toc)[i++] = strdup(e->key);
+  
+  pthread_mutex_unlock (&md->lock);
+  return count;
+} /* }}} int meta_data_toc */
+
 int meta_data_delete (meta_data_t *md, const char *key) /* {{{ */
 {
   meta_entry_t *this;
index 7a9afee..9ef7b0a 100644 (file)
@@ -41,6 +41,7 @@ void meta_data_destroy (meta_data_t *md);
 
 int meta_data_exists (meta_data_t *md, const char *key);
 int meta_data_type (meta_data_t *md, const char *key);
+int meta_data_toc (meta_data_t *md, char ***toc);
 int meta_data_delete (meta_data_t *md, const char *key);
 
 int meta_data_add_string (meta_data_t *md,