changeset 242:809eaca3898c

Added helper functions to handle lists of NSS SECItems.
author Sascha Wilde <wilde@intevation.de>
date Fri, 28 Mar 2014 18:37:59 +0100
parents 74d6e33c7d38
children 4b67cc2d4dad
files cinst/CMakeLists.txt cinst/nss-secitemlist.c cinst/nss-secitemlist.h
diffstat 3 files changed, 69 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cinst/CMakeLists.txt	Fri Mar 28 13:33:58 2014 +0100
+++ b/cinst/CMakeLists.txt	Fri Mar 28 18:37:59 2014 +0100
@@ -30,6 +30,7 @@
 if(NSS_FOUND)
   include_directories(${NSS_INCLUDE_DIRS})
   set(MOZILLA_SOURCES
+    ${CMAKE_CURRENT_SOURCE_DIR}/nss-secitemlist.c
     ${CMAKE_CURRENT_SOURCE_DIR}/mozilla.c
     )
   add_executable(mozilla ${MOZILLA_SOURCES})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cinst/nss-secitemlist.c	Fri Mar 28 18:37:59 2014 +0100
@@ -0,0 +1,28 @@
+#include "nss-secitemlist.h"
+
+void
+seciteml_push (seciteml_t **list, SECItem *item)
+{
+  seciteml_t *newlelt;
+  SECItem *newitem;
+  newlelt = (seciteml_t *)xmalloc( sizeof(seciteml_t) );
+  newitem = (SECItem *)xmalloc( sizeof(SECItem) );
+  memcpy(newitem, item, sizeof(SECItem));
+  newlelt->item = newitem;
+  newlelt->next = *list;
+  *list = newlelt;
+}
+
+SECItem *seciteml_pop (seciteml_t **list)
+{
+  seciteml_t *oldlelt;
+  SECItem *item = NULL;
+  
+  if (*list != NULL)
+    {
+      oldlelt = *list;
+      item = oldlelt->item;
+      *list = oldlelt->next;
+    }
+  return(item);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cinst/nss-secitemlist.h	Fri Mar 28 18:37:59 2014 +0100
@@ -0,0 +1,40 @@
+#ifndef NSS_SECITEMLIST_H
+#define NSS_SECITEMLIST_H
+
+/**
+ * @file
+ * @brief Functions to handle lists of NSS SECItem-s.
+ */
+
+#include <seccomon.h>
+#include "strhelp.h"
+
+struct seciteml {
+  SECItem *item;
+  struct seciteml *next;
+};
+
+/**
+ * @brief Type for SECItem lists
+ */
+typedef struct seciteml seciteml_t;
+
+/**
+ * @brief Prepend a new SECItem to list
+ *
+ * The data will be copied.
+ * @param[inout] list pointer to the list to which the item will be added.
+ * @param[in] item the SECItem to add to the list.
+ */
+void seciteml_push (seciteml_t **list, SECItem *item);
+
+/**
+ * @brief Remove and return first SECItem from list
+ *
+ * @param[inout] list pointer to the list to which the item will be added.
+ * @retruns the removed item, or NULL if list is empty.
+ * The caller shoud free this item after use.
+ */
+SECItem *seciteml_pop (seciteml_t **list);
+
+#endif

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