From da126e4ad2020633233eff88fe10a9b4894d713c Mon Sep 17 00:00:00 2001 From: millert <> Date: Thu, 5 Dec 2002 22:26:04 +0000 Subject: [PATCH] Correctly handle -Wlong_arg (no space between -W and long_arg) when "W;" is in optstring. --- src/lib/libc/stdlib/getopt_long.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lib/libc/stdlib/getopt_long.c b/src/lib/libc/stdlib/getopt_long.c index 130c1d8b..bcbd53cf 100644 --- a/src/lib/libc/stdlib/getopt_long.c +++ b/src/lib/libc/stdlib/getopt_long.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getopt_long.c,v 1.3 2002/12/05 21:45:01 millert Exp $ */ +/* $OpenBSD: getopt_long.c,v 1.4 2002/12/05 22:26:04 millert Exp $ */ /* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ /*- @@ -38,7 +38,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: getopt_long.c,v 1.3 2002/12/05 21:45:01 millert Exp $"; +static char *rcsid = "$OpenBSD: getopt_long.c,v 1.4 2002/12/05 22:26:04 millert Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -62,11 +62,11 @@ char *optarg; /* argument associated with option */ #define FLAG_LONGONLY 0x04 /* operate as getopt_long_only */ /* return values */ -#define BADCH (int)'?' +#define BADCH (int)'?' #define BADARG ((*options == ':') ? (int)':' : (int)'?') -#define INORDER (int)1 +#define INORDER (int)1 -#define EMSG "" +#define EMSG "" static int getopt_internal(int, char * const *, const char *, const struct option *, int *, int); @@ -403,7 +403,9 @@ start: } if (long_options != NULL && optchar == 'W' && oli[1] == ';') { /* -W long-option */ - if (++optind >= nargc) { /* no arg */ + if (*place) /* no space */ + /* NOTHING */; + else if (++optind >= nargc) { /* no arg */ place = EMSG; if (PRINT_ERROR) warnx(recargchar, optchar);