aboutsummaryrefslogtreecommitdiff
path: root/source/Host/common/OptionParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Host/common/OptionParser.cpp')
-rw-r--r--source/Host/common/OptionParser.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/source/Host/common/OptionParser.cpp b/source/Host/common/OptionParser.cpp
index cf133597cb84..a91e764bfe3b 100644
--- a/source/Host/common/OptionParser.cpp
+++ b/source/Host/common/OptionParser.cpp
@@ -8,11 +8,10 @@
//===----------------------------------------------------------------------===//
#include "lldb/Host/OptionParser.h"
-
-#if (!defined( _MSC_VER ) && defined( _WIN32 ))
-#define _BSD_SOURCE // Required so that getopt.h defines optreset
-#endif
#include "lldb/Host/HostGetOpt.h"
+#include "lldb/lldb-private-types.h"
+
+#include <vector>
using namespace lldb_private;
@@ -40,7 +39,19 @@ OptionParser::Parse (int argc,
const Option *longopts,
int *longindex)
{
- return getopt_long_only(argc, argv, optstring, (const option*)longopts, longindex);
+ std::vector<option> opts;
+ while (longopts->definition != nullptr)
+ {
+ option opt;
+ opt.flag = longopts->flag;
+ opt.val = longopts->val;
+ opt.name = longopts->definition->long_option;
+ opt.has_arg = longopts->definition->option_has_arg;
+ opts.push_back(opt);
+ ++longopts;
+ }
+ opts.push_back(option());
+ return getopt_long_only(argc, argv, optstring, &opts[0], longindex);
}
char*