From 732191377db384f2d9541781a453ab805c6f57db Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Tue, 19 Feb 2008 19:58:40 +0000 Subject: [PATCH] Bumped debian version to 3.0.25-1 --- debian/changelog | 6 ++++++ src/options.c | 39 ++++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/debian/changelog b/debian/changelog index c0d0656..6106ab0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +yaz (3.0.25-1) unstable; urgency=low + + * Internal. + + -- Adam Dickmeiss Tue, 19 Feb 2008 20:58:24 +0100 + yaz (3.0.24-1) unstable; urgency=low * Upstream. diff --git a/src/options.c b/src/options.c index 47dd433..3125735 100644 --- a/src/options.c +++ b/src/options.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: options.c,v 1.5 2007-01-03 08:42:15 adam Exp $ + * $Id: options.c,v 1.6 2008-02-19 19:58:40 adam Exp $ */ /** * \file options.c @@ -13,7 +13,7 @@ #endif #include - +#include #include static int arg_no = 1; @@ -21,7 +21,9 @@ static int arg_off = 0; int options (const char *desc, char **argv, int argc, char **arg) { - int ch, i = 0; + const char *opt_buf = 0; + int i = 0; + int ch = 0; if (arg_no >= argc) return -2; @@ -38,26 +40,45 @@ int options (const char *desc, char **argv, int argc, char **arg) *arg = argv[arg_no++]; return 0; } - arg_off++; + arg_off++; /* skip - */ + } + if (argv[arg_no][1] == '-') + { /* long opt */ + opt_buf = argv[arg_no]+2; + arg_off = strlen(argv[arg_no]); + } + else + { /* single char opt */ + ch = argv[arg_no][arg_off++]; } - ch = argv[arg_no][arg_off++]; while (desc[i]) { int desc_char = desc[i++]; int type = 0; + while (desc[i] == '{') + { + int i0 = ++i; + while (desc[i] && desc[i] != '}') + i++; + if (opt_buf && (i - i0) == strlen(opt_buf) && + memcmp(opt_buf, desc+i0, i - i0) == 0) + ch = desc_char; + if (desc[i]) + i++; + } if (desc[i] == ':') { /* string argument */ - type = desc[i++]; + type = desc[i++]; } if (desc_char == ch) - { /* option with argument */ - if (type) + { + if (type) /* option with argument */ { if (argv[arg_no][arg_off]) { *arg = argv[arg_no]+arg_off; arg_no++; - arg_off = 0; + arg_off = 0; } else { -- 1.7.10.4