diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -5,12 +5,16 @@ #include <string.h> #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=<num> fetch element from position <num>\n" " --num=<num> <num> of elements to fetch\n" " --out=<name> write output to <name> file\n" |