#ifndef _GETOPT_H
#define _GETOPT_H

#ifdef __cplusplus
extern "C" {
#endif

#if defined(TARGET_WINDOWS)
#include <features.h>
#endif

int getopt(int, char * const [], const char *);
#if defined(TARGET_WINDOWS)
PINCRT_DLL_DATA_VIS char *optarg;
PINCRT_DLL_DATA_VIS int optind;
PINCRT_DLL_DATA_VIS int opterr;
PINCRT_DLL_DATA_VIS int optopt;
PINCRT_DLL_DATA_VIS int optreset;
#else
extern char *optarg;
extern int optind, opterr, optopt, optreset;
#endif

struct option {
	const char *name;
	int has_arg;
	int *flag;
	int val;
};

int getopt_long(int, char *const *, const char *, const struct option *, int *);
int getopt_long_only(int, char *const *, const char *, const struct option *, int *);

#define no_argument        0
#define required_argument  1
#define optional_argument  2

#ifdef __cplusplus
}
#endif

#endif
