summaryrefslogtreecommitdiff
path: root/source/Host/common/OptionParser.cpp
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2014-11-25 21:00:58 +0000
committerEd Maste <emaste@FreeBSD.org>2014-11-25 21:00:58 +0000
commit0cac4ca3916ac24ab6139d03cbfd18db9e715bfe (patch)
treec94307da318be46e5aeea1a325c1e91749506e4f /source/Host/common/OptionParser.cpp
parent03b99097822ca3ac69252d9afae716a584ed56c4 (diff)
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*