summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2021-03-14 19:49:07 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2021-03-14 19:49:07 +0200
commit111d08d814720966d12fd57b58331c149df7e6cf (patch)
tree8c838a937767decc16579a3a3550e91c996de276 /src/main.c
parent56f20e30636c16fd14205ba7c29cf8089caa1260 (diff)
downloadalgos-ld1-111d08d814720966d12fd57b58331c149df7e6cf.tar.gz
algos-ld1-111d08d814720966d12fd57b58331c149df7e6cf.tar.bz2
algos-ld1-111d08d814720966d12fd57b58331c149df7e6cf.zip
we can now print out stuff... things.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/main.c b/src/main.c
index 1bac2de..f4990ac 100644
--- a/src/main.c
+++ b/src/main.c
@@ -14,6 +14,7 @@
#include "cache.h"
#include "datagen.h"
#include "mergesort.h"
+#include "util.h"
static struct settings settings = {0, 0, 0, NULL, NULL, mode_normal, array, cached};
@@ -53,7 +54,14 @@ int main(int argc, char **argv)
file_out.name = settings.fileout ? settings.fileout : settings.filein;
try_s((ret = stream_open(&file_in)), out);
- file_out.n = settings.opmode == mode_normal ? file_in.n : file_in.n - settings.ss;
+
+ if (settings.opmode == mode_fetch) {
+ settings.to = settings.to == settings.ss ? file_in.n : settings.to;
+ file_tmp.n = settings.to - settings.ss;
+ } else {
+ file_out.n = file_in.n;
+ }
+
try_s((ret = stream_open(&file_out)), out);
load_io_functions(&settings, &file_out);
@@ -64,11 +72,15 @@ int main(int argc, char **argv)
switch (settings.opmode) {
case mode_fetch:
+ stream_shallow_copy(&file_in, &file_tmp);
if (settings.format == array) {
- try_s((ret = cache_block_copy(&file_in, &file_out)), out);
+ try_s((ret = cache_block_copy(&file_in, &file_tmp)), out);
} else { /* settings.format == list */
- try_s((ret = stream_copy_range(&file_in, &file_out)), out);
+ try_s((ret = stream_copy_range(&file_in, &file_tmp)), out);
}
+
+ print_data(&file_tmp);
+
break;
case mode_generate:
try_s((ret = cache_transfer(&file_in, &file_out)), out);
@@ -191,11 +203,13 @@ static int parseargs(int argc, char **argv, struct settings * settings)
}
- if (s.opmode == mode_generate) {
- /* we always generate in-memory for PERFORMANCE */
+ if (s.opmode != mode_normal) {
+ /* we always generate and print out in-memory for PERFORMANCE */
s.access = cached;
- } else if (s.opmode == mode_fetch) {
- s.to = s.ss + s.to;
+
+ if (s.opmode == mode_fetch) {
+ s.to = s.ss + s.to;
+ }
}
s.stride = s.format == list ? sizeof(struct entry_l) : sizeof(struct entry);