#if defined(WIN32ENV)
#ifndef __GETOPT_H__
#ifndef __GETOPTW_H__
/**
* DISCLAIMER
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
*
* The mingw-w64 runtime package and its code is distributed in the hope that it
* will be useful but WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESSED OR
* IMPLIED ARE HEREBY DISCLAIMED.  This includes but is not limited to
* warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* This licence is governed by the laws of Ontario, Canada and any dispute
* shall be finally resolved by the courts in London, Ontario, Canada.
*/

#define __GETOPTW_H__

/* All the headers include this file. */
//#include <crtdefs.h>

#ifdef __cplusplus
extern "C" {
#endif

	extern int optind;		/* index of first non-option in argv      */
	extern int optopt;		/* single option character, as parsed     */
	extern int opterr;		/* flag to enable built-in diagnostics... */
							/* (user may set to zero, to suppress)    */

	extern wchar_t *optarg;		/* pointer to argument of current option  */

	extern int getoptW(int nargc, wchar_t * const *nargv, const wchar_t *options);

#ifdef _BSD_SOURCE
	/*
	* BSD adds the non-standard `optreset' feature, for reinitialisation
	* of `getoptW' parsing.  We support this feature, for applications which
	* proclaim their BSD heritage, before including this header; however,
	* to maintain portability, developers are advised to avoid it.
	*/
# define optreset  __mingw_optreset
	extern int optreset;
#endif
#ifdef __cplusplus
}
#endif
/*
* POSIX requires the `getoptW' API to be specified in `unistd.h';
* thus, `unistd.h' includes this header.  However, we do not want
* to expose the `getoptW_long' or `getoptW_long_only' APIs, when
* included in this manner.  Thus, close the standard __GETOPTW_H__
* declarations block, and open an additional __GETOPTW_LONG_H__
* specific block, only when *not* __UNISTD_H_SOURCED__, in which
* to declare the extended API.
*/
#endif /* !defined(__GETOPTW_H__) */

#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPTW_LONG_H__)
#define __GETOPTW_LONG_H__

#ifdef __cplusplus
extern "C" {
#endif

	struct optionW		/* specification for a long form option...	*/
	{
		const wchar_t *name;		/* option name, without leading hyphens */
		int         has_arg;		/* does it take an argument?		*/
		int        *flag;		/* where to save its status, or NULL	*/
		int         val;		/* its associated status value		*/
	};

	enum    		/* permitted values for its `has_arg' field...	*/
	{
		no_argument = 0,      	/* option never takes an argument	*/
		required_argument,		/* option always requires an argument	*/
		optional_argument		/* option may take an argument		*/
	};

	int getoptW_long(int nargc, wchar_t * const *nargv, const wchar_t *options,
		const struct optionW *long_options, int *idx);
	int getoptW_long_only(int nargc, wchar_t * const *nargv, const wchar_t *options,
		const struct optionW *long_options, int *idx);
	/*
	* Previous MinGW implementation had...
	*/
#ifndef HAVE_DECL_GETOPT
	/*
	* ...for the long form API only; keep this for compatibility.
	*/
# define HAVE_DECL_GETOPT	1
#endif

#ifdef __cplusplus
}
#endif

#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPTW_LONG_H__) */
#endif
#endif

#if defined(LINUXENV)

//#include <unistd.h>
#include <getopt.h>

#endif