1 //===-- source/Host/common/OptionParser.cpp ---------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Host/OptionParser.h" 11 12 #ifdef _MSC_VER 13 #include "../windows/msvc/getopt.inc" 14 #else 15 #ifdef _WIN32 16 #define _BSD_SOURCE // Required so that getopt.h defines optreset 17 #endif 18 #include <getopt.h> 19 #endif 20 21 using namespace lldb_private; 22 23 void 24 OptionParser::Prepare() 25 { 26 #ifdef __GLIBC__ 27 optind = 0; 28 #else 29 optreset = 1; 30 optind = 1; 31 #endif 32 } 33 34 void 35 OptionParser::EnableError(bool error) 36 { 37 opterr = error ? 1 : 0; 38 } 39 40 int 41 OptionParser::Parse(int argc, char * const argv [], 42 const char *optstring, 43 const Option *longopts, int *longindex) 44 { 45 return getopt_long_only(argc, argv, optstring, (const option*)longopts, longindex); 46 } 47 48 char* OptionParser::GetOptionArgument() 49 { 50 return optarg; 51 } 52 53 int OptionParser::GetOptionIndex() 54 { 55 return optind; 56 } 57 58 int OptionParser::GetOptionErrorCause() 59 { 60 return optopt; 61 } 62