Moving files, first attempt at gcrypt compatibility, more interface
[tinc] / src / pokey / array.c
diff --git a/src/pokey/array.c b/src/pokey/array.c
new file mode 100644 (file)
index 0000000..9946ad1
--- /dev/null
@@ -0,0 +1,45 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "myalloc.h"
+#include "array.h"
+
+void *array_add(array_t *array, void *element)
+{
+  if(!array)
+    return NULL;
+
+  if(array->allocated == 0)
+    {
+      array->allocated = 4;
+      array->data = xcalloc(array->allocated, sizeof(void*));
+      array->elements = 0;
+    }
+
+  if(array->elements >= array->allocated - 1)
+    {
+      int newalloc;
+
+      newalloc = array->allocated << 1;
+      array->data = xrealloc(array->data, newalloc * sizeof(void*));
+      array->allocated = newalloc;
+    }
+
+  array->data[array->elements] = element;
+  array->elements++;
+  return element;
+}
+
+array_t *array_create(void)
+{
+  array_t *r;
+
+  r = xcalloc(1, sizeof(*r));
+  return r;
+}
+
+void array_free(array_t *array)
+{
+  free(array->data);
+  free(array);
+}