1#pragma once 2 3#include "lldb/lldb-defines.h" 4 5#if defined(_MSC_VER) 6#define REPLACE_GETOPT 7#define REPLACE_GETOPT_LONG 8#endif 9#if defined(_MSC_VER) || defined(__NetBSD__) 10#define REPLACE_GETOPT_LONG_ONLY 11#endif 12 13#if defined(REPLACE_GETOPT) 14// from getopt.h 15#define no_argument 0 16#define required_argument 1 17#define optional_argument 2 18 19// option structure 20struct option { 21 const char *name; 22 // has_arg can't be an enum because some compilers complain about type 23 // mismatches in all the code that assumes it is an int. 24 int has_arg; 25 int *flag; 26 int val; 27}; 28 29int getopt(int argc, char *const argv[], const char *optstring); 30 31// from getopt.h 32extern char *optarg; 33extern int optind; 34extern int opterr; 35extern int optopt; 36 37// defined in unistd.h 38extern int optreset; 39#else 40#include <getopt.h> 41#include <unistd.h> 42#endif 43 44#if defined(REPLACE_GETOPT_LONG) 45int getopt_long(int argc, char *const *argv, const char *optstring, 46 const struct option *longopts, int *longindex); 47#endif 48 49#if defined(REPLACE_GETOPT_LONG_ONLY) 50int getopt_long_only(int argc, char *const *argv, const char *optstring, 51 const struct option *longopts, int *longindex); 52#endif 53