diff common/listutil.c @ 286:881ce5126f07

Add helper function to get all certificates in a list
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 02 Apr 2014 13:47:24 +0000
parents b0579d4fa186
children 57867a523dcf
line wrap: on
line diff
--- a/common/listutil.c	Wed Apr 02 13:45:57 2014 +0000
+++ b/common/listutil.c	Wed Apr 02 13:47:24 2014 +0000
@@ -9,6 +9,8 @@
 #include <sys/stat.h>
 #include <string.h>
 
+#include "strhelp.h"
+
 #ifdef RELEASE
 #include "pubkey-release.h"
 #else
@@ -232,22 +234,30 @@
     return retval;
 }
 
-char **get_certs_to_remove(const char *data, const size_t size) {
+char **
+get_certs_from_list (char *data, const size_t size)
+{
+  char *cur = data;
+  char **retval = NULL;
 
-    /* TODO */
-    if (!data || !size) {
-        printf ("Invalid call to get_certs_to_remove \n");
-        return NULL;
+  if (!data || !size)
+    {
+      printf ("Invalid call to get_certs_to_remove \n");
+      return NULL;
     }
-    return NULL;
+
+  while (cur)
+    {
+      char *next = strchr(cur, '\n');
+      if (strlen(cur) > 3 && (cur[0] == 'I' || cur[0] == 'R') &&
+          next - cur > 4)
+        {
+          size_t len = (size_t) (next - cur - 4);
+          /* Remove I: or R: at the beginning and \r\n at the end */
+          strv_append(&retval, cur + 2, len);
+        }
+      cur = next ? (next + 1) : NULL;
+    }
+  return retval;
 }
 
-char **get_certs_to_install(const char *data, const size_t size) {
-
-    /* TODO */
-    if (!data || !size) {
-        printf ("Invalid call to get_certs_to_install \n");
-        return NULL;
-    }
-    return NULL;
-}

http://wald.intevation.org/projects/trustbridge/