diff options
author | Pedro F. Giffuni <pfg@FreeBSD.org> | 2014-06-22 20:13:57 +0000 |
---|---|---|
committer | Pedro F. Giffuni <pfg@FreeBSD.org> | 2014-06-22 20:13:57 +0000 |
commit | 6aa225165fe7ddb3a3f8fce85d554a324f0b73f3 (patch) | |
tree | 8ff0c1efb45173a0d2b0f830885bcc47c6505f46 /lib/libc/stdlib/getopt.c | |
parent | 872442932ba541281e97cdfb9e3dcc10c3fc92d4 (diff) |
Notes
Diffstat (limited to 'lib/libc/stdlib/getopt.c')
-rw-r--r-- | lib/libc/stdlib/getopt.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/libc/stdlib/getopt.c b/lib/libc/stdlib/getopt.c index b9d2ae31fc64..3929b321dca9 100644 --- a/lib/libc/stdlib/getopt.c +++ b/lib/libc/stdlib/getopt.c @@ -1,4 +1,4 @@ -/* $NetBSD: getopt.c,v 1.26 2003/08/07 16:43:40 agc Exp $ */ +/* $NetBSD: getopt.c,v 1.29 2014/06/05 22:00:22 christos Exp $ */ /* * Copyright (c) 1987, 1993, 1994 @@ -59,10 +59,7 @@ char *optarg; /* argument associated with option */ * Parse argc/argv argument vector. */ int -getopt(nargc, nargv, ostr) - int nargc; - char * const nargv[]; - const char *ostr; +getopt(int nargc, char * const nargv[], const char *ostr) { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ @@ -115,6 +112,12 @@ getopt(nargc, nargv, ostr) entire next argument. */ if (*place) optarg = place; + else if (oli[2] == ':') + /* + * GNU Extension, for optional arguments if the rest of + * the argument is empty, we return NULL + */ + optarg = NULL; else if (nargc > ++optind) optarg = nargv[optind]; else { |