summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-12-30 12:03:31 -0500
committerAlon Zakai <alonzakai@gmail.com>2015-12-30 12:03:31 -0500
commitc34dd278a73ecb34fb10825f238ef98d394e4f0b (patch)
tree64447c432e67a3bcaf22c91de92c31149074aea2 /src
parent44a8aeaf5820ee06e8c6dbc061d131d7b4d39cd3 (diff)
parent3bf113b601de6d1a55f54ed1b788037cd5514419 (diff)
downloadbinaryen-c34dd278a73ecb34fb10825f238ef98d394e4f0b.tar.gz
binaryen-c34dd278a73ecb34fb10825f238ef98d394e4f0b.tar.bz2
binaryen-c34dd278a73ecb34fb10825f238ef98d394e4f0b.zip
Merge pull request #55 from WebAssembly/support-command-line
Start moving command-line processing to libsupport.a
Diffstat (limited to 'src')
-rw-r--r--src/s2wasm-main.cpp2
-rw-r--r--src/support/command-line.cpp (renamed from src/command-line.h)38
-rw-r--r--src/support/command-line.h43
3 files changed, 54 insertions, 29 deletions
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp
index 86a9737a7..00b71ab16 100644
--- a/src/s2wasm-main.cpp
+++ b/src/s2wasm-main.cpp
@@ -18,7 +18,7 @@
// wasm2asm console tool
//
-#include "command-line.h"
+#include "support/command-line.h"
#include "s2wasm.h"
using namespace cashew;
diff --git a/src/command-line.h b/src/support/command-line.cpp
index 4b8b12b4c..3c03d48f4 100644
--- a/src/command-line.h
+++ b/src/support/command-line.cpp
@@ -14,33 +14,19 @@
* limitations under the License.
*/
-//
-// Command line helpers.
-//
-
-#ifndef wasm_command_line_h
-#define wasm_command_line_h
-
-#include "wasm.h"
-
-namespace wasm {
-
-struct Options {
- // standard options
- bool debug;
- std::string infile;
- std::string outfile;
- // extra options
- std::map<std::string, const char*> extra;
- Options() : debug(false) {}
-};
+#include "support/command-line.h"
+namespace {
bool optionIs(const char *arg, const char *LongOpt, const char *ShortOpt) {
return strcmp(arg, LongOpt) == 0 || strcmp(arg, ShortOpt) == 0;
}
+bool startsWith(const char *str, const char *prefix) {
+ return strncmp(str, prefix, strlen(prefix)) == 0;
+}
+} // anonymous namespace
-// TODO(jfb) Make this configurable: callers should pass in option handlers.
-void processCommandLine(int argc, const char *argv[], Options *options, const char *help) {
+void wasm::processCommandLine(int argc, const char *argv[], Options *options,
+ const char *help) {
assert(argc > 0 && "expect at least program name as an argument");
for (size_t i = 1, e = argc; i != e; ++i) {
if (optionIs(argv[i], "--help", "-h")) {
@@ -59,14 +45,14 @@ void processCommandLine(int argc, const char *argv[], Options *options, const ch
exit(EXIT_FAILURE);
}
options->outfile = argv[++i];
- } else if (argv[i][0] == '-' && argv[i][1] == '-') {
+ } else if (startsWith(argv[i], "--")) {
size_t j = 2;
std::string name;
while (argv[i][j] && argv[i][j] != '=') {
name += argv[i][j];
j++;
}
- options->extra[name] = argv[i][j] == '=' ? &argv[i][j+1] : "(no value)";
+ options->extra[name] = argv[i][j] == '=' ? &argv[i][j + 1] : "(no value)";
} else {
if (options->infile.size()) {
std::cerr << "Expected only one input file, got '" << options->infile
@@ -77,7 +63,3 @@ void processCommandLine(int argc, const char *argv[], Options *options, const ch
}
}
}
-
-} // namespace wasm
-
-#endif // wasm_command_line_h
diff --git a/src/support/command-line.h b/src/support/command-line.h
new file mode 100644
index 000000000..f57929b6b
--- /dev/null
+++ b/src/support/command-line.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2015 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Command line helpers.
+//
+
+#ifndef wasm_support_command_line_h
+#define wasm_support_command_line_h
+
+#include "wasm.h"
+
+namespace wasm {
+
+struct Options {
+ // standard options
+ bool debug;
+ std::string infile;
+ std::string outfile;
+ // extra options
+ std::map<std::string, const char *> extra;
+ Options() : debug(false) {}
+};
+
+void processCommandLine(int argc, const char *argv[], Options *options,
+ const char *help);
+
+} // namespace wasm
+
+#endif // wasm_support_command_line_h