Loading...
stdlib/FreeBSD/getopt.c.patch /dev/null Libc-498
--- /dev/null
+++ Libc/Libc-498/stdlib/FreeBSD/getopt.c.patch
@@ -0,0 +1,59 @@
+--- ../Libc/stdlib/FreeBSD/getopt.c	2004-11-25 11:38:41.000000000 -0800
++++ getopt.c	2005-01-26 19:27:09.000000000 -0800
+@@ -48,16 +48,24 @@
+ 
+ #include "libc_private.h"
+ 
++#ifndef BUILDING_VARIANT
+ int	opterr = 1,		/* if error message should be printed */
+ 	optind = 1,		/* index into parent argv vector */
+ 	optopt,			/* character checked for validity */
+ 	optreset;		/* reset getopt */
+ char	*optarg;		/* argument associated with option */
++#endif /* !BUILDING_VARIANT */
+ 
+ #define	BADCH	(int)'?'
+ #define	BADARG	(int)':'
+ #define	EMSG	""
+ 
++#if __DARWIN_UNIX03
++#define PROGNAME nargv[0]
++#else
++#define PROGNAME _getprogname()
++#endif
++
+ /*
+  * getopt --
+  *	Parse argc/argv argument vector.
+@@ -103,8 +111,8 @@
+ 			++optind;
+ 		if (opterr && *ostr != ':')
+ 			(void)fprintf(stderr,
+-			    "%s: illegal option -- %c\n", _getprogname(),
+-			    optopt);
++			    "%s: illegal option -- %c\n",
++			    PROGNAME, optopt);
+ 		return (BADCH);
+ 	}
+ 
+@@ -123,13 +131,19 @@
+ 			optarg = nargv[optind];
+ 		else {
+ 			/* option-argument absent */
++#if __DARWIN_UNIX03
++			/* Yes, the standard will put optind past the last
++			   argument */
++			++optind;
++			optarg = NULL;
++#endif /* __DARWIN_UNIX03 */
+ 			place = EMSG;
+ 			if (*ostr == ':')
+ 				return (BADARG);
+ 			if (opterr)
+ 				(void)fprintf(stderr,
+ 				    "%s: option requires an argument -- %c\n",
+-				    _getprogname(), optopt);
++				    PROGNAME, optopt);
+ 			return (BADCH);
+ 		}
+ 		place = EMSG;