X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Foptions.c;h=4cb53d182dced56d791f6b5195dc26177561d150;hb=08e2bab36d24a98ed921130df0973370be5aac80;hp=4d92e1392a3e4fc75f2d2a9e034b08a693a0780a;hpb=43a9d38d20c1b1bcd1a03b2445a501d27526bd35;p=yaz-moved-to-github.git diff --git a/src/options.c b/src/options.c index 4d92e13..4cb53d1 100644 --- a/src/options.c +++ b/src/options.c @@ -16,8 +16,9 @@ static int arg_no = 1; static size_t arg_off = 0; +static int eof_options = 0; -int options (const char *desc, char **argv, int argc, char **arg) +int options(const char *desc, char **argv, int argc, char **arg) { const char *opt_buf = 0; size_t i = 0; @@ -33,15 +34,26 @@ int options (const char *desc, char **argv, int argc, char **arg) if (arg_no >= argc) return YAZ_OPTIONS_EOF; } - if (argv[arg_no][0] != '-' || argv[arg_no][1] == '\0') + if (argv[arg_no][0] != '-' || argv[arg_no][1] == '\0' || eof_options) { *arg = argv[arg_no++]; return 0; } arg_off++; /* skip - */ } + /* we're in option mode */ if (argv[arg_no][1] == '-') { /* long opt */ + if (argv[arg_no][2] == '\0') /* -- : end of options */ + { + eof_options = 1; + arg_off = 0; + ++arg_no; + if (arg_no >= argc) + return YAZ_OPTIONS_EOF; + *arg = argv[arg_no++]; + return 0; + } opt_buf = argv[arg_no]+2; arg_off = strlen(argv[arg_no]); }