summaryrefslogtreecommitdiff
path: root/vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'vector.c')
-rw-r--r--vector.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/vector.c b/vector.c
new file mode 100644
index 0000000..0863908
--- /dev/null
+++ b/vector.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include "vector.h"
+
+static int grow(struct vector *vec, int gently)
+{
+ size_t new_alloc;
+ void *new_data;
+
+ new_alloc = vec->alloc * 3 / 2;
+ if (!new_alloc)
+ new_alloc = 8;
+ new_data = realloc(vec->data, new_alloc * vec->size);
+ if (!new_data) {
+ if (gently)
+ return ENOMEM;
+ perror("vector.c:grow()");
+ exit(1);
+ }
+ vec->data = new_data;
+ vec->alloc = new_alloc;
+ return 0;
+}
+
+int vector_push(struct vector *vec, const void *data, int gently)
+{
+ int rc;
+
+ if (vec->count == vec->alloc && (rc = grow(vec, gently)))
+ return rc;
+ if (data)
+ memmove(vec->data + vec->count * vec->size, data, vec->size);
+ else
+ memset(vec->data + vec->count * vec->size, 0, vec->size);
+ vec->count++;
+ return 0;
+}
René 'Necoro' Neumann1-1/+7 2020-05-07Improve html renderingRené 'Necoro' Neumann2-53/+32 2020-05-07Do not assume items to be new when their published date is newer than the las...René 'Necoro' Neumann2-7/+1 2020-05-07Updating some depsRené 'Necoro' Neumann2-2/+7 2020-05-07Better detection if a text starts with html or notRené 'Necoro' Neumann2-4/+13 2020-05-07go fmtRené 'Necoro' Neumann1-3/+2 2020-05-07Add header X-Feed2Imap-GUIDRené 'Necoro' Neumann3-1/+7 2020-05-07update changelogRené 'Necoro' Neumann1-0/+1 2020-05-07FixRené 'Necoro' Neumann1-1/+1 2020-05-07Unified publishedDate and updatedDate into one (just as the old feed2imap...)René 'Necoro' Neumann5-21/+32 2020-05-06Print version during startupRené 'Necoro' Neumann1-1/+1 2020-05-06Improve templateRené 'Necoro' Neumann3-20/+28 2020-05-05Fix pipelineRené 'Necoro' Neumann1-2/+5 2020-05-05Make changelog a part of the release pipeline (untested)René 'Necoro' Neumann2-0/+12