From 7980ded002b380a9b3c8e8656c3272ee9923e8c9 Mon Sep 17 00:00:00 2001 From: Gediminas Jakutis Date: Sun, 16 Feb 2020 22:44:57 +0200 Subject: expand command line argument handling. Signed-off-by: Gediminas Jakutis --- src/main.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 2e1ffe1..aa3e4b7 100644 --- a/src/main.c +++ b/src/main.c @@ -5,12 +5,16 @@ #include #include "io.h" +static const unsigned int OPERATING_MODE = (1 << 0); +static const unsigned int DATA_FORMAT = (1 << 1); +static const unsigned int DATA_ACCESS = (1 << 2); + static struct settings_s { size_t fetchpos; size_t fetchto; char *filein; char *fileout; - int mode; + unsigned int mode; } settings = {0}; static struct stream file_in = {.fd = -1}; @@ -61,9 +65,17 @@ 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 &= ~1; + s.mode &= ~OPERATING_MODE; } else if (!(strcmp(argv[i], "--fetch"))) { - s.mode |= 1; + s.mode |= OPERATING_MODE; + } else if (!(strcmp(argv[i], "--array"))) { + s.mode &= ~DATA_FORMAT; + } else if (!(strcmp(argv[i], "--list"))) { + s.mode |= DATA_FORMAT; + } else if (!(strcmp(argv[i], "--cache"))) { + s.mode &= ~DATA_ACCESS; + } else if (!(strcmp(argv[i], "--no-cache"))) { + s.mode |= DATA_ACCESS; } else if (!(strncmp(argv[i], "--position=", 11))) { if (strlen(argv[i]) > 11) { s.fetchpos = strtoul(argv[i] + 11, NULL, 10); @@ -118,7 +130,10 @@ void printhelp(const char * const name) "\n" "Options:\n" " --sort sort mode (default)\n" - " --fetch fetch element\n" + " --fetch do not sort, fetch element(s) instead\n" + " --array use an array data format (default)\n" + " --list use a linked list data format\n" + " --[no]-cache cache data in memory (default) or process data in-place\n" " --position= fetch element from position \n" " --num= of elements to fetch\n" " --out= write output to file\n" -- cgit v1.2.3