summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-02-16 22:44:57 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2020-02-16 22:44:57 +0200
commit7980ded002b380a9b3c8e8656c3272ee9923e8c9 (patch)
tree84f8d015150efb611996597c13662dabeefc806f /src
parent8d72ffe268305a823057053f6a172ac7debee3b0 (diff)
downloadalgos-ld1-7980ded002b380a9b3c8e8656c3272ee9923e8c9.tar.gz
algos-ld1-7980ded002b380a9b3c8e8656c3272ee9923e8c9.tar.bz2
algos-ld1-7980ded002b380a9b3c8e8656c3272ee9923e8c9.zip
expand command line argument handling.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src')
-rw-r--r--src/main.c23
1 files changed, 19 insertions, 4 deletions
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 <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"