From 00efa76eaac7c9717b5ce69922b8ca01c0dd31fa Mon Sep 17 00:00:00 2001 From: Kranklyboy Date: Wed, 18 Apr 2018 19:15:00 +0200 Subject: [PATCH] parse() parses the -s option now correctly --- websh.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/websh.c b/websh.c index 9d62820..742adc7 100644 --- a/websh.c +++ b/websh.c @@ -10,12 +10,16 @@ #include #include #include +#include #include #include static const char *pname; +static const char *word; +static const char *tag; + void usage(void) { fprintf(stderr, "Usage: websh [-e] [-h] [-s WORD:TAG]\n"); @@ -29,6 +33,7 @@ void parse(int argc, char *argv[]) int sFlag = 0; int optInd = 0; + char *sArg; while ((optInd = getopt(argc, argv, "ehs:")) != -1) { switch (optInd) { @@ -51,7 +56,7 @@ void parse(int argc, char *argv[]) usage(); } else { sFlag = 1; - char *sArg = optarg; + sArg = optarg; } break; case '?': @@ -61,7 +66,19 @@ void parse(int argc, char *argv[]) } } - + + char *token; + int i = 0; + while ((token = strsep(&sArg, ":"))) { + if (i == 2) + usage(); + if (i == 0) { + word = token; + } else { + tag = token; + } + i++; + } pname = argv[0]; }