diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-30 12:03:31 -0500 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-30 12:03:31 -0500 |
commit | c34dd278a73ecb34fb10825f238ef98d394e4f0b (patch) | |
tree | 64447c432e67a3bcaf22c91de92c31149074aea2 /src | |
parent | 44a8aeaf5820ee06e8c6dbc061d131d7b4d39cd3 (diff) | |
parent | 3bf113b601de6d1a55f54ed1b788037cd5514419 (diff) | |
download | binaryen-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.cpp | 2 | ||||
-rw-r--r-- | src/support/command-line.cpp (renamed from src/command-line.h) | 38 | ||||
-rw-r--r-- | src/support/command-line.h | 43 |
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 |