view src/build-msvctools/getopt.diff @ 3061:f8299bb6c872

Initial support for native MSVC compilation. * add MSVC support files: compiler wrappers and support libraries * adapt libiconv to work with MSVC * adapt gettext to work with MSVC
author Michael Goffioul <michael.goffioul@gmail.com>
date Mon, 17 Jun 2013 22:43:11 -0400
parents
children
line wrap: on
line source

--- getopt.c	2010-01-14 21:38:46 +0000
+++ getopt-new.c	2010-01-14 21:37:14 +0000
@@ -47,6 +47,10 @@
 # define PROGNAME  *argv
 #endif
 
+#ifdef _MSC_VER
+# define __inline__ __inline
+#endif
+
 /* Initialise the public variables. */
 
 int optind = 1;				/* index for first non-option arg     */
@@ -463,7 +467,7 @@
     /*
      * we use `this_arg' to store these temporarily.
      */
-    CHAR *this_arg[optspan];
+    CHAR **this_arg = (CHAR**) malloc (sizeof(CHAR*) * optspan);
     /*
      * we cannot manipulate `argv' directly, since the `getopt'
      * API prototypes it as `read-only'; this cast to `arglist'
@@ -493,6 +497,8 @@
     /* adjust `optbase', to account for the relocated option.
      */
     optbase += optspan;
+
+    free(this_arg);
   }
 
   else
@@ -578,9 +584,12 @@
 	 * specified for the `getopt_long' APIs.
 	 */
 	va_list refptr;
+	struct option *longopts;
+	int *optindex;
+	
 	va_start( refptr, optstring );
-	struct option *longopts = va_arg( refptr, struct option * );
-	int *optindex = va_arg( refptr, int * );
+	longopts = va_arg( refptr, struct option * );
+	optindex = va_arg( refptr, int * );
 	va_end( refptr );
 
 	/* ensuring that `optarg' does not inherit any junk, from parsing