diff options
| author | Chris Lattner <sabre@nondot.org> | 2006-01-17 00:32:28 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2006-01-17 00:32:28 +0000 |
| commit | f64762c26ece50194ee19ff2a8a1fa91d328481c (patch) | |
| tree | 527423215f3b9b79891af6385fcca3c2cc6acaa7 /llvm/lib/Support/CommandLine.cpp | |
| parent | bec9d720b0791c845d4631c257965aeb6fcfb70d (diff) | |
| download | bcm5719-llvm-f64762c26ece50194ee19ff2a8a1fa91d328481c.tar.gz bcm5719-llvm-f64762c26ece50194ee19ff2a8a1fa91d328481c.zip | |
Add support for programs with a null argv[0]
llvm-svn: 25379
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
| -rw-r--r-- | llvm/lib/Support/CommandLine.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp index 6aa6c091292..1644308077a 100644 --- a/llvm/lib/Support/CommandLine.cpp +++ b/llvm/lib/Support/CommandLine.cpp @@ -448,8 +448,11 @@ void cl::ParseCommandLineOptions(int &argc, char **argv, } if (Handler == 0) { - std::cerr << ProgramName << ": Unknown command line argument '" << argv[i] - << "'. Try: '" << argv[0] << " --help'\n"; + if (ProgramName) + std::cerr << ProgramName << ": Unknown command line argument '" + << argv[i] << "'. Try: '" << argv[0] << " --help'\n"; + else + std::cerr << "Unknown command line argument '" << argv[i] << "'.\n"; ErrorParsing = true; continue; } @@ -485,17 +488,28 @@ void cl::ParseCommandLineOptions(int &argc, char **argv, // Check and handle positional arguments now... if (NumPositionalRequired > PositionalVals.size()) { - std::cerr << ProgramName - << ": Not enough positional command line arguments specified!\n" - << "Must specify at least " << NumPositionalRequired - << " positional arguments: See: " << argv[0] << " --help\n"; + if (ProgramName) + std::cerr << ProgramName + << ": Not enough positional command line arguments specified!\n" + << "Must specify at least " << NumPositionalRequired + << " positional arguments: See: " << argv[0] << " --help\n"; + else + std::cerr << "Not enough positional command line arguments specified!\n" + << "Must specify at least " << NumPositionalRequired + << " positional arguments."; + ErrorParsing = true; } else if (!HasUnlimitedPositionals && PositionalVals.size() > PositionalOpts.size()) { - std::cerr << ProgramName - << ": Too many positional arguments specified!\n" - << "Can specify at most " << PositionalOpts.size() - << " positional arguments: See: " << argv[0] << " --help\n"; + if (ProgramName) + std::cerr << ProgramName + << ": Too many positional arguments specified!\n" + << "Can specify at most " << PositionalOpts.size() + << " positional arguments: See: " << argv[0] << " --help\n"; + else + std::cerr << "Too many positional arguments specified!\n" + << "Can specify at most " << PositionalOpts.size() + << " positional arguments.\n"; ErrorParsing = true; } else if (ConsumeAfterOpt == 0) { |

