summaryrefslogtreecommitdiffstats
path: root/src/datagen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/datagen.c')
-rw-r--r--src/datagen.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/datagen.c b/src/datagen.c
index 9efe3b3..d4c8bab 100644
--- a/src/datagen.c
+++ b/src/datagen.c
@@ -1,19 +1,20 @@
+/* SPDX-License-Identifier: LGPL-2.1-only */
+
+/* Copyright (C) 2020 Gediminas Jakutis */
+
#include <unistd.h>
#include <stddef.h>
#include <errno.h>
+#include <stdlib.h>
+#include <sys/types.h>
#include "datagen.h"
#include "defs.h"
-int gen_get(struct stream *in, size_t idx, struct entry_l *data, int tag)
+int gen_get_array(struct stream * const restrict in, ssize_t idx, struct entry_l * const data)
{
int ret = 0;
(void) idx;
- if (tag) {
- data->prev = 0;
- data->next = 0;
- }
-
in->prev_idx = -1;
ret = read(in->fd, &data->val, sizeof(data->val));
@@ -23,3 +24,24 @@ int gen_get(struct stream *in, size_t idx, struct entry_l *data, int tag)
return ret;
}
+
+int gen_get_list(struct stream * const restrict in, ssize_t idx, struct entry_l * const data)
+{
+ int ret = 0;
+
+ data->prev = idx > 0 ? idx - 1 : labs(idx) - 1;
+ data->next = idx + 1;
+
+ if (!idx) {
+ data->val = 0; /* header lmao */
+ } else {
+ ret = gen_get_array(in, idx, data);
+ }
+
+ return ret;
+}
+
+int gen_put(struct stream * const restrict in, ssize_t idx, const struct entry_l * const data)
+{
+ return ENOSYS;
+}