summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/main.c b/src/main.c
index 0d9109f..fabc612 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,3 +1,7 @@
+/* SPDX-License-Identifier: LGPL-2.1-only */
+
+/* Copyright (C) 2020 Gediminas Jakutis */
+
#include <errno.h>
#include <stddef.h>
#include <stdlib.h>
@@ -6,9 +10,6 @@
#include "io.h"
#include "defs.h"
-static const unsigned int FLAG_DATA_FORMAT = (1 << 0);
-static const unsigned int FLAG_DATA_ACCESS = (1 << 1);
-
static char randfile[] = "/dev/urandom";
static struct settings settings = {0};
@@ -62,13 +63,13 @@ static int parseargs(int argc, char **argv, struct settings * settings)
} else if (!(strcmp(argv[i], "--generate"))) {
s.opmode = mode_generate;
} else if (!(strcmp(argv[i], "--array"))) {
- s.opmode &= ~FLAG_DATA_FORMAT;
+ s.format = array;
} else if (!(strcmp(argv[i], "--list"))) {
- s.opmode |= FLAG_DATA_FORMAT;
+ s.format = list;
} else if (!(strcmp(argv[i], "--cache"))) {
- s.opmode &= ~FLAG_DATA_ACCESS;
+ s.access = cached;
} else if (!(strcmp(argv[i], "--no-cache"))) {
- s.opmode |= FLAG_DATA_ACCESS;
+ s.access = direct;
} else if (!(strncmp(argv[i], "--position=", 11))) {
if (strlen(argv[i]) > 11) {
s.ss = strtoul(argv[i] + 11, NULL, 10);
@@ -104,13 +105,17 @@ static int parseargs(int argc, char **argv, struct settings * settings)
if (s.opmode == mode_generate) {
- /* we always generate in-memory for speed */
- s.opmode &= ~FLAG_DATA_ACCESS;
+ /* we always generate in-memory for PERFORMANCE */
+ s.access = cached;
+ if (s.format == list) {
+ /* we need to generate the empty header, too */
+ ++s.to;
+ }
} else if (s.opmode == mode_fetch) {
s.to = s.ss + s.to;
}
- s.stride = s.opmode & FLAG_DATA_FORMAT ? sizeof(struct entry_l) : sizeof(struct entry);
+ s.stride = s.format == list ? sizeof(struct entry_l) : sizeof(struct entry);
*settings = s;