1//===-- GetOptInc.h ---------------------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef LLDB_HOST_COMMON_GETOPTINC_H 10#define LLDB_HOST_COMMON_GETOPTINC_H 11 12#include "lldb/lldb-defines.h" 13 14#if defined(_MSC_VER) 15#define REPLACE_GETOPT 16#define REPLACE_GETOPT_LONG 17#endif 18#if defined(_MSC_VER) || defined(__NetBSD__) 19#define REPLACE_GETOPT_LONG_ONLY 20#endif 21 22#if defined(REPLACE_GETOPT) 23// from getopt.h 24#define no_argument 0 25#define required_argument 1 26#define optional_argument 2 27 28// option structure 29struct option { 30 const char *name; 31 // has_arg can't be an enum because some compilers complain about type 32 // mismatches in all the code that assumes it is an int. 33 int has_arg; 34 int *flag; 35 int val; 36}; 37 38int getopt(int argc, char *const argv[], const char *optstring); 39 40// from getopt.h 41extern char *optarg; 42extern int optind; 43extern int opterr; 44extern int optopt; 45 46// defined in unistd.h 47extern int optreset; 48#else 49#include <getopt.h> 50#include <unistd.h> 51#endif 52 53#if defined(REPLACE_GETOPT_LONG) 54int getopt_long(int argc, char *const *argv, const char *optstring, 55 const struct option *longopts, int *longindex); 56#endif 57 58#if defined(REPLACE_GETOPT_LONG_ONLY) 59int getopt_long_only(int argc, char *const *argv, const char *optstring, 60 const struct option *longopts, int *longindex); 61#endif 62 63#endif // LLDB_HOST_COMMON_GETOPTINC_H 64