diff options
| author | Pedro F. Giffuni <pfg@FreeBSD.org> | 2014-07-07 02:47:41 +0000 |
|---|---|---|
| committer | Pedro F. Giffuni <pfg@FreeBSD.org> | 2014-07-07 02:47:41 +0000 |
| commit | 69884ba8e6e11b3bf041b46803d567c4fc4f53b7 (patch) | |
| tree | 691aea9cf5ce894315583f830b81832a0556cc57 /lib/libc/stdlib/getopt.c | |
| parent | c845b94c21ae06731cabe03bc2c60b26cab06bc7 (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 b9d2ae31fc644..3929b321dca90 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 { |
