From 6bd9b777f28db4d1c7927f7bb3dced339b0decb5 Mon Sep 17 00:00:00 2001 From: Gediminas Jakutis Date: Fri, 14 Feb 2020 14:17:26 +0200 Subject: add first bits of the I/O wrapper. Signed-off-by: Gediminas Jakutis --- src/main.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index ee80826..b70e599 100644 --- a/src/main.c +++ b/src/main.c @@ -1,8 +1,10 @@ +#include #include #include #include #include #include +#include "io.h" static struct settings_s { size_t fetchpos; @@ -12,6 +14,9 @@ static struct settings_s { int mode; } settings = {0}; +static struct stream file_in = {.fd = -1}; +static struct stream file_out = {.fd = -1}; + static int parseargs(int argc, char **argv, struct settings_s * settings); void printhelp(const char * const name); @@ -23,7 +28,25 @@ int main(int argc, char **argv) goto out; } + file_in.name = settings.filein; + file_in.stride = 0; /* TODO */ + + if ((ret = openstream(&file_in))) { + goto out; + } + + file_out.name = settings.fileout ? settings.fileout : settings.filein; + file_out.out = 1; + file_out.n = file_in.n; + file_out.stride = 0; /* TODO */ + + if ((ret = openstream(&file_out))) { + goto out; + } + out: + close(file_in.fd); + close(file_out.fd); return ret; } @@ -39,9 +62,9 @@ static int parseargs(int argc, char **argv, struct settings_s * settings) for (i = 1; i < argc - 1; ++i) { if (!(strcmp(argv[i], "--sort"))) { - s.mode = 0; + s.mode &= ~1; } else if (!(strcmp(argv[i], "--fetch"))) { - s.mode = 1; + s.mode |= 1; } else if (!(strncmp(argv[i], "--position=", 11))) { if (strlen(argv[i]) > 11) { s.fetchpos = strtoul(argv[i] + 11, NULL, 10); @@ -71,7 +94,14 @@ static int parseargs(int argc, char **argv, struct settings_s * settings) s.filein = argv[i]; } + if (!s.fileout) { + s.fileout = s.filein; + } + + s.fetchto = s.fetchpos + s.fetchto; + *settings = s; + if (0) { err: ret = EINVAL; -- cgit v1.2.3